ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInspectorController.java
@@ -9,11 +9,11 @@ import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TDept; import com.ruoyi.system.model.TLocation; import com.ruoyi.system.model.TProjectDept; import com.ruoyi.system.model.TTaskDetail; import com.ruoyi.system.dto.TInspectorAuditDTO; import com.ruoyi.system.dto.TTaskAuditDTO; import com.ruoyi.system.model.*; import com.ruoyi.system.query.InsepectorListQuery; import com.ruoyi.system.query.TaskListQuery; import com.ruoyi.system.service.*; @@ -30,6 +30,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -55,12 +56,16 @@ @Resource private TTaskDetailService tTaskDetailService; @Resource private TokenService tokenService; @Resource private TDeptService deptService; @Resource private ISysUserService sysUserService; @Resource private TInspectorService inspectorService; @Resource private TTaskCleanService taskCleanerService; @ApiOperation(value = "督察记录分页列表") @PostMapping(value = "/pageList") public R<PageInfo<InspectorListVO>> pageList(@RequestBody InsepectorListQuery query) { @@ -243,5 +248,78 @@ inspectorService.removeById(id); return R.ok(); } @Resource private TNoticeService noticeService; @Resource private TNoticeSetService noticeSetService; @Log(title = "审核任务", businessType = BusinessType.UPDATE) @ApiOperation(value = "审核任务") @PostMapping(value = "/audit") public R<Boolean> audit(@RequestBody TInspectorAuditDTO dto) { TTaskAuditDTO tTaskAuditDTO = new TTaskAuditDTO(); BeanUtils.copyProperties(dto, tTaskAuditDTO); dto.setAuditTime(LocalDateTime.now()); TTask task = taskCleanerService.getById(dto.getTaskId()); TLocation location = locationService.getById(task.getLocationId()); TNotice tNotice = new TNotice(); TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") .one(); tNotice.setUserId(task.getPatrolInspector()); tNotice.setStatus(1); tNotice.setDataId(task.getId()); tNotice.setNoticeSetType(noticeSet.getNoticeType()); if (dto.getAuditStatus()==2){ tTaskAuditDTO.setHandleType(3); // 将任务修改为待整改 task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); }else{ tTaskAuditDTO.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List<TTaskDetail> list = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); if (list.isEmpty()){ if (dto.getClearStatus()==1){ task.setStatus(6); dto.setStatus(4); taskCleanerService.updateById(task); }else{ dto.setStatus(2); task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); } }else{ if (dto.getClearStatus()==1){ dto.setStatus(3); task.setStatus(5); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); }else{ dto.setStatus(2); task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); } } } noticeService.save(tNotice); dto.setAuditPerson(tokenService.getLoginUser().getUserId()+""); inspectorService.updateById(dto); tTaskDetailService.save(tTaskAuditDTO); return R.ok(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLeaveController.java
@@ -83,16 +83,25 @@ LeaveAuditDetailVO leaveAuditDetailVO = new LeaveAuditDetailVO(); BeanUtils.copyProperties(tLeaveAudit,leaveAuditDetailVO); if (tLeaveAudit.getAuditType()==2){ if (sysUser!=null){ leaveAuditDetailVO.setNickName(sysUser.getNickName()); leaveAuditDetailVO.setAvatar(sysUser.getPhonenumber()); for (String s : tLeaveAudit.getAuditId().split(",")) { SysUser sysUser1 = sysUserService.selectUserById(Long.valueOf(s)); if (sysUser1!=null){ leaveAuditDetailVO.setAvatar(sysUser1.getAvatar()); leaveAuditDetailVO.setNickName(sysUser1.getNickName()); leaveAuditDetailVOS.add(leaveAuditDetailVO); } } }else{ // todo 最终审核人还未确定 SysUser sysUser1 = sysUserService.selectUserById(Long.valueOf(tLeaveAudit.getAuditId())); // 查询审核人 leaveAuditDetailVO.setNickName(sysUser1.getNickName()); leaveAuditDetailVO.setAvatar(sysUser1.getAvatar()); leaveAuditDetailVOS.add(leaveAuditDetailVO); } } leaveDetailVO.setList(leaveAuditDetailVOS); return R.ok(); return R.ok(leaveDetailVO); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TLocationController.java
@@ -178,7 +178,7 @@ res.add(temp); } pageInfo.setRecords(res); return R.ok(); return R.ok(pageInfo); } @ApiOperation(value = "根据片区id查询保洁员列表 不分页") @GetMapping(value = "/listCleaner") @@ -275,6 +275,8 @@ @GetMapping("/import-template") public void importTemplate() { List<TLocationImportExcel> locationImportExcels = new ArrayList<>(); TLocationImportExcel tLocationImportExcel = new TLocationImportExcel(); locationImportExcels.add(tLocationImportExcel); Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TLocationImportExcel.class, locationImportExcels); HttpServletResponse response = WebUtils.response(); ServletOutputStream outputStream = null; ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTaskController.java
@@ -196,17 +196,36 @@ }else{ dto.setHandleType(2); // 如果是初次审核就通过 将状态设置为已完成 List<TTaskDetail> list = taskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); List<TTaskDetail> list = tTaskDetailService.lambdaQuery().eq(TTaskDetail::getTaskId, dto.getTaskId()).list(); if (list.isEmpty()){ task.setStatus(6); taskCleanerService.updateById(task); if (dto.getClearStatus()==1){ task.setStatus(6); taskCleanerService.updateById(task); }else{ task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); } }else{ task.setStatus(5); taskCleanerService.updateById(task); if (dto.getClearStatus()==1){ task.setStatus(5); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); }else{ task.setStatus(4); taskCleanerService.updateById(task); // 增加消息 tNotice.setNoticeType(1); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务不合格,请重新上传!"); } } // 增加消息 tNotice.setNoticeType(2); tNotice.setNoticeContent("【"+location.getLocationName()+"】任务已通过"); } noticeService.save(tNotice); dto.setAuditPerson(tokenService.getLoginUser().getUserId()+""); ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.system.mapper.TCleanerMapper; import com.ruoyi.system.model.*; import com.ruoyi.system.service.*; @@ -17,6 +18,7 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -55,7 +57,10 @@ private TTaskCleanService taskCleanService; @Scheduled(cron = "0 0 0 * * ?") // 每一个小时执行一次 // @Scheduled(cron = "0 0 0 * * ?") @Scheduled(fixedRate = 1500000000) public void dayOfCreateInspection() { try { @@ -75,6 +80,8 @@ } public void createInspection(TTemplate template) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); // 查询所有的模板详情 List<TTemplateDetail> list = templateDetailService.list(Wrappers.lambdaQuery(TTemplateDetail.class) .eq(TTemplateDetail::getTemplateId, template.getId())); @@ -116,9 +123,11 @@ // 获取项目部列表 List<TProjectDept> projectDeptList; if(CollectionUtils.isEmpty(projectDeptIds)){ projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class)); projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .ne(TProjectDept::getParentId,0)); }else { projectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .ne(TProjectDept::getParentId,0) .in(TProjectDept::getId, projectDeptIds)); // 所过所有的项目部都被抽取了,则重新抽取,并且清空项目部权重 if(CollectionUtils.isEmpty(projectDeptList)){ @@ -131,7 +140,8 @@ if(projectDepts.size() < num2){ List<String> proIds = projectDepts.stream().map(TProjectDept::getId).collect(Collectors.toList()); List<TProjectDept> projectDeptList1 = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .notIn(TProjectDept::getId, proIds)); .notIn(TProjectDept::getId, proIds) .ne(TProjectDept::getParentId,0)); redisCache.deleteObject(detail.getId() + PROJECT_DEPT_WEIGHT); List<TProjectDept> projectDepts1 = randomSelection(projectDeptList1, num2 - projectDepts.size()); List<String> proIds1 = projectDepts1.stream().map(TProjectDept::getId).collect(Collectors.toList()); @@ -147,7 +157,7 @@ // 拿到抽取的项目部下的所有保洁员 List<TProjectDept> tProjectDeptList = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) .in(TProjectDept::getParentId, proIds)); .in(TProjectDept::getId, proIds)); // 获取片区id List<String> areaIds = tProjectDeptList.stream().map(TProjectDept::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty(areaIds)){ @@ -159,6 +169,9 @@ .in(TCleaner::getProjectId, areaIds)); int cleanerSums = num1 * Integer.parseInt(count + ""); // 获取每天需要抽取的保洁员数,向上取整 if (cleanerSums <cycle){ cleanerSums = cycle; } int dayCleanerCount = cleanerSums / cycle; // 获取保洁员权重 @@ -256,12 +269,16 @@ SysUser sysUser = sysUsers.get(0); task.setPatrolInspector(sysUser.getUserId().toString()); task.setPatrolInspectorDept(sysUser.getDeptId()); task.setUserId(sysUser.getUserId()); } task.setStatus(1); task.setLocationId(tLocation.getId()); task.setImplementTime(LocalDateTime.now().plusDays(1)); task.setTaskType(1); task.setTemplateId(detail.getId()); String nameAndCode = CodeGenerateUtils.generateVolumeSn(); task.setTaskName(nameAndCode); task.setTaskCode(nameAndCode); tasks.add(task); } taskCleanService.saveBatch(tasks); ruoyi-system/src/main/java/com/ruoyi/system/dto/TInspectorAuditDTO.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.system.dto; import com.ruoyi.system.model.TInspector; import com.ruoyi.system.model.TTaskDetail; import io.swagger.annotations.ApiModel; import lombok.Data; @Data @ApiModel(value = "督察任务审核DTO") public class TInspectorAuditDTO extends TInspector { } ruoyi-system/src/main/java/com/ruoyi/system/model/TTemplateDetail.java
@@ -1,6 +1,8 @@ package com.ruoyi.system.model; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.ruoyi.common.core.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -22,7 +24,7 @@ @EqualsAndHashCode(callSuper = false) @TableName("t_template_detail") @ApiModel(value="TTemplateDetail对象", description="任务模板详情") public class TTemplateDetail extends BaseModel { public class TTemplateDetail implements Serializable { private static final long serialVersionUID = 1L; @@ -66,5 +68,34 @@ @ApiModelProperty(value = "当前周期值") @TableField("current_value") private Integer currentValue; @ApiModelProperty(value = "记录创建人,前端忽略") @TableField(value = "create_by", fill = FieldFill.INSERT) private String createBy; /** * 新增和更新执行 */ @ApiModelProperty(value = "记录修改人,前端忽略") @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) private String updateBy; /** * 删除 未删除 */ @JsonIgnore @TableField("`disabled`") @TableLogic private Boolean disabled; @ApiModelProperty(value = "记录创建时间,前端忽略") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; /** * 最后修改时间 */ @ApiModelProperty(value = "记录修改时间,前端忽略") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; }