Browse Source

feat: 调整巡查结果检索接口

master_tdsql
hxh 1 year ago
parent
commit
ce1e6d39f7
  1. 5
      shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java
  2. 1
      shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java
  3. 37
      shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordSearchDto.java
  4. 49
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java
  5. 7
      shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzRecordController.java
  6. 1
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/dto/SzRecordDetailDto.java
  7. 37
      shuili-system/src/main/java/com/kms/yxgh/sz/domain/dto/SzRecordSearchDto.java
  8. 68
      shuili-system/src/main/java/com/kms/yxgh/sz/service/SzRecordService.java

5
shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java

@ -3,6 +3,7 @@ package com.kms.yxgh.df.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.df.domain.dto.DfRecordDetailDto;
import com.kms.yxgh.df.domain.dto.DfRecordSearchDto;
import com.kms.yxgh.df.domain.dto.StartPlan;
import com.kms.yxgh.df.domain.entity.DfRecord;
import com.kms.yxgh.df.service.DfRecordService;
@ -41,8 +42,8 @@ public class DfRecordController {
*/
@PostMapping("/list")
@ApiOperation("堤防巡视检查记录列表")
public IPage<DfRecord> list(@RequestBody SearchParam<DfRecord> sp) {
return dfRecordService.selectPage(sp);
public IPage<DfRecordSearchDto> list(@RequestBody SearchParam<DfRecord> sp) {
return dfRecordService.search(sp);
}

1
shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java

@ -33,7 +33,6 @@ public class DfRecordDetailDto {
private List<DfRecordItemDto> items;
@Data
public static class DfRecordItemDto {
@ApiModelProperty("主键")

37
shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordSearchDto.java

@ -0,0 +1,37 @@
package com.kms.yxgh.df.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* @ClassName: DfRecordSearchDto
* @Description: TODO
* @Date: 2023/11/15 下午4:02 *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("堤防巡视检查记录检索详情")
public class DfRecordSearchDto {
@ApiModelProperty("巡查记录")
private String id;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("巡查记录名称")
private String name;
@ApiModelProperty("状态")
private Long status;
@ApiModelProperty("异常部位")
private List<String> parts;
@ApiModelProperty("操作者")
private String operatorName;
}

49
shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java

@ -4,14 +4,18 @@ import static com.kms.yxgh.df.service.DfCheckingService.PART_SEPARATOR;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.common.utils.BaseEntityUtils;
import com.kms.system.service.SysUserService;
import com.kms.yxgh.base.enums.CheckingStatus;
import com.kms.yxgh.base.enums.RecordStatus;
import com.kms.yxgh.df.domain.dto.DfCheckingDetailDto;
import com.kms.yxgh.df.domain.dto.DfPlanDetailDto;
import com.kms.yxgh.df.domain.dto.DfRecordDetailDto;
import com.kms.yxgh.df.domain.dto.DfRecordDetailDto.DfRecordItemDto;
import com.kms.yxgh.df.domain.dto.DfRecordSearchDto;
import com.kms.yxgh.df.domain.dto.StartPlan;
import com.kms.yxgh.df.domain.entity.DfRecord;
import com.kms.yxgh.df.domain.entity.DfRecordItem;
@ -19,13 +23,18 @@ import com.kms.yxgh.df.mapper.DfRecordItemMapper;
import com.kms.yxgh.df.mapper.DfRecordMapper;
import com.kms.yxgh.util.BeanCopyUtils;
import com.kms.yxgh.util.StreamUtils;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.exception.BaseException;
import com.shuili.common.utils.DateUtils;
import com.shuili.common.utils.StringUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -44,6 +53,44 @@ public class DfRecordService extends BaseService<DfRecordMapper, DfRecord> {
private final DfRecordItemMapper dfRecordItemMapper;
private final DfCheckingService dfCheckingService;
private final DfPlanService dfPlanService;
private final SysUserService userService;
public IPage<DfRecordSearchDto> search(SearchParam<DfRecord> sp) {
IPage<DfRecord> page = selectPage(sp);
if (CollectionUtil.isNotEmpty(page.getRecords())) {
List<String> ids = page.getRecords().stream().map(DfRecord::getId)
.collect(Collectors.toList());
Wrapper<DfRecordItem> wp = Wrappers.<DfRecordItem>lambdaQuery()
.in(DfRecordItem::getRecordId, ids)
.eq(DfRecordItem::getStatus, CheckingStatus.ABNORMAL.getValue());
Map<String, List<DfRecordItem>> items = Optional.ofNullable(dfRecordItemMapper.selectList(wp))
.map(list -> list.stream().collect(
Collectors.groupingBy(DfRecordItem::getRecordId, Collectors.toList())))
.orElseGet(Collections::emptyMap);
List<DfRecordSearchDto> records = page.getRecords().stream().map(r -> {
DfRecordSearchDto dto = BeanCopyUtils.copy(r, DfRecordSearchDto
.class);
if (dto != null) {
dto.setParts(items.getOrDefault(r.getPlanId(), Collections.emptyList())
.stream().map(item -> {
List<String> parts = Arrays.stream(item.getParts().split(PART_SEPARATOR))
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList());
return parts.get(parts.size() - 1);
}).collect(Collectors.toList()));
dto.setOperatorName(Optional.ofNullable(userService.getWithRedis(r.getCreateUid())).map(
SysUser::getNickName).orElse(""));
}
return dto;
}).collect(Collectors.toList());
Page<DfRecordSearchDto> recordSearchDtoPage = new Page<>(page.getCurrent(), page.getSize(),
page.getTotal());
recordSearchDtoPage.setRecords(records);
return recordSearchDtoPage;
} else {
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
}
}
@Transactional(rollbackFor = Exception.class)
public DfRecordDetailDto start(StartPlan startPlan) {
@ -100,6 +147,7 @@ public class DfRecordService extends BaseService<DfRecordMapper, DfRecord> {
return null;
}
@Transactional(rollbackFor = Exception.class)
public DfRecordDetailDto update(DfRecordDetailDto dfRecord) {
if (CollectionUtil.isNotEmpty(dfRecord.getItems())) {
dfRecord.getItems().forEach(o -> {
@ -116,6 +164,7 @@ public class DfRecordService extends BaseService<DfRecordMapper, DfRecord> {
return dfRecord;
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
boolean rt = removeById(id);
if (rt) {

7
shuili-system/src/main/java/com/kms/yxgh/sz/controller/SzRecordController.java

@ -2,9 +2,10 @@ package com.kms.yxgh.sz.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto;
import com.kms.yxgh.sz.domain.dto.StartPlan;
import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto;
import com.kms.yxgh.sz.domain.entity.SzRecord;
import com.kms.yxgh.sz.domain.dto.SzRecordSearchDto;
import com.kms.yxgh.sz.service.SzRecordService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.domain.SearchParam;
@ -41,8 +42,8 @@ public class SzRecordController {
*/
@PostMapping("/list")
@ApiOperation("水闸巡视检查记录列表")
public IPage<SzRecord> list(@RequestBody SearchParam<SzRecord> sp) {
return szRecordService.selectPage(sp);
public IPage<SzRecordSearchDto> list(@RequestBody SearchParam<SzRecord> sp) {
return szRecordService.search(sp);
}

1
shuili-system/src/main/java/com/kms/yxgh/sz/domain/dto/SzRecordDetailDto.java

@ -33,7 +33,6 @@ public class SzRecordDetailDto {
private List<SzRecordItemDto> items;
@Data
public static class SzRecordItemDto {
@ApiModelProperty("主键")

37
shuili-system/src/main/java/com/kms/yxgh/sz/domain/dto/SzRecordSearchDto.java

@ -0,0 +1,37 @@
package com.kms.yxgh.sz.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
* @ClassName: DfRecordSearchDto
* @Description: TODO
* @Date: 2023/11/15 下午4:02 *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("水闸巡视检查记录检索详情")
public class SzRecordSearchDto {
@ApiModelProperty("巡查记录")
private String id;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("巡查记录名称")
private String name;
@ApiModelProperty("状态")
private Long status;
@ApiModelProperty("异常部位")
private List<String> parts;
@ApiModelProperty("操作者")
private String operatorName;
}

68
shuili-system/src/main/java/com/kms/yxgh/sz/service/SzRecordService.java

@ -4,8 +4,11 @@ import static com.kms.yxgh.sz.service.SzCheckingService.PART_SEPARATOR;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.common.utils.BaseEntityUtils;
import com.kms.system.service.SysUserService;
import com.kms.yxgh.base.enums.CheckingStatus;
import com.kms.yxgh.base.enums.RecordStatus;
import com.kms.yxgh.sz.domain.dto.StartPlan;
@ -15,17 +18,23 @@ import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto;
import com.kms.yxgh.sz.domain.dto.SzRecordDetailDto.SzRecordItemDto;
import com.kms.yxgh.sz.domain.entity.SzRecord;
import com.kms.yxgh.sz.domain.entity.SzRecordItem;
import com.kms.yxgh.sz.domain.dto.SzRecordSearchDto;
import com.kms.yxgh.sz.mapper.SzRecordItemMapper;
import com.kms.yxgh.sz.mapper.SzRecordMapper;
import com.kms.yxgh.util.BeanCopyUtils;
import com.kms.yxgh.util.StreamUtils;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.core.service.BaseService;
import com.shuili.common.exception.BaseException;
import com.shuili.common.utils.DateUtils;
import com.shuili.common.utils.StringUtils;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -41,15 +50,54 @@ import org.springframework.transaction.annotation.Transactional;
@AllArgsConstructor
public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
private final SzRecordItemMapper SzRecordItemMapper;
private final SzCheckingService SzCheckingService;
private final SzPlanService SzPlanService;
private final SzRecordItemMapper szRecordItemMapper;
private final SzCheckingService szCheckingService;
private final SzPlanService szPlanService;
private final SysUserService userService;
public IPage<SzRecordSearchDto> search(SearchParam<SzRecord> sp) {
IPage<SzRecord> page = selectPage(sp);
if (CollectionUtil.isNotEmpty(page.getRecords())) {
List<String> ids = page.getRecords().stream().map(SzRecord::getId)
.collect(Collectors.toList());
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.in(SzRecordItem::getRecordId, ids)
.eq(SzRecordItem::getStatus, CheckingStatus.ABNORMAL.getValue());
Map<String, List<SzRecordItem>> items = Optional.ofNullable(szRecordItemMapper.selectList(wp))
.map(list -> list.stream().collect(
Collectors.groupingBy(SzRecordItem::getRecordId, Collectors.toList())))
.orElseGet(Collections::emptyMap);
List<SzRecordSearchDto> records = page.getRecords().stream().map(r -> {
SzRecordSearchDto dto = BeanCopyUtils.copy(r, SzRecordSearchDto
.class);
if (dto != null) {
dto.setParts(items.getOrDefault(r.getPlanId(), Collections.emptyList())
.stream().map(item -> {
List<String> parts = Arrays.stream(item.getParts().split(
SzCheckingService.PART_SEPARATOR))
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList());
return parts.get(parts.size() - 1);
}).collect(Collectors.toList()));
dto.setOperatorName(Optional.ofNullable(userService.getWithRedis(r.getCreateUid())).map(
SysUser::getNickName).orElse(""));
}
return dto;
}).collect(Collectors.toList());
Page<SzRecordSearchDto> recordSearchDtoPage = new Page<>(page.getCurrent(), page.getSize(),
page.getTotal());
recordSearchDtoPage.setRecords(records);
return recordSearchDtoPage;
} else {
return new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
}
}
@Transactional(rollbackFor = Exception.class)
public SzRecordDetailDto start(StartPlan startPlan) {
SzPlanDetailDto planDetailDto = SzPlanService.getDetailById(startPlan.getPlanId());
SzPlanDetailDto planDetailDto = szPlanService.getDetailById(startPlan.getPlanId());
if (planDetailDto != null) {
SzCheckingDetailDto checkingDetailDto = SzCheckingService.getDetailById(
SzCheckingDetailDto checkingDetailDto = szCheckingService.getDetailById(
planDetailDto.getXcId());
if (checkingDetailDto != null) {
SzRecord record = new SzRecord();
@ -67,7 +115,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
item.setStatus(CheckingStatus.NORMAL.getValue());
item.setRecordId("");
BaseEntityUtils.preInsert(item);
SzRecordItemMapper.insert(item);
szRecordItemMapper.insert(item);
});
}
return this.getDetailById(id);
@ -84,7 +132,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
SzRecordDetailDto dto = BeanCopyUtils.copy(record, SzRecordDetailDto.class);
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.eq(SzRecordItem::getRecordId, id);
List<SzRecordItem> items = SzRecordItemMapper.selectList(wp);
List<SzRecordItem> items = szRecordItemMapper.selectList(wp);
if (CollectionUtil.isNotEmpty(items) && dto != null) {
dto.setItems(StreamUtils.toList(items, r -> {
SzRecordItemDto itemDto = BeanCopyUtils.copy(r, SzRecordItemDto.class);
@ -100,6 +148,7 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
return null;
}
@Transactional(rollbackFor = Exception.class)
public SzRecordDetailDto update(SzRecordDetailDto SzRecord) {
if (CollectionUtil.isNotEmpty(SzRecord.getItems())) {
SzRecord.getItems().forEach(o -> {
@ -110,12 +159,13 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
item.setStatus(o.getStatus());
item.setProblem(o.getProblem());
BaseEntityUtils.preUpdate(item);
SzRecordItemMapper.updateById(item);
szRecordItemMapper.updateById(item);
});
}
return SzRecord;
}
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
boolean rt = removeById(id);
if (rt) {
@ -127,6 +177,6 @@ public class SzRecordService extends BaseService<SzRecordMapper, SzRecord> {
private void deleteItems(String id) {
Wrapper<SzRecordItem> wp = Wrappers.<SzRecordItem>lambdaQuery()
.eq(SzRecordItem::getRecordId, id);
SzRecordItemMapper.delete(wp);
szRecordItemMapper.delete(wp);
}
}

Loading…
Cancel
Save