Browse Source

feat: 添加巡查记录相关接口

master_tdsql
hxh 1 year ago
parent
commit
c2a0f1714b
  1. 26
      shuili-system/src/main/java/com/kms/yxgh/base/enums/CheckingStatus.java
  2. 26
      shuili-system/src/main/java/com/kms/yxgh/base/enums/RecordStatus.java
  3. 88
      shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java
  4. 104
      shuili-system/src/main/java/com/kms/yxgh/df/controller/DfTraceController.java
  5. 54
      shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java
  6. 20
      shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/StartPlan.java
  7. 4
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfCheckingService.java
  8. 121
      shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java

26
shuili-system/src/main/java/com/kms/yxgh/base/enums/CheckingStatus.java

@ -0,0 +1,26 @@
package com.kms.yxgh.base.enums;
import lombok.Getter;
/**
* @ClassName: RecordStatus
* @Description: TODO
* @Date: 2023/11/15 上午11:56 *
* @author: hxh
* @version: 1.0
*/
@Getter
public enum CheckingStatus {
NORMAL("正常", 1),
ABNORMAL("异常", 0);
private final Integer value;
private final String name;
CheckingStatus(String name, Integer value) {
this.name = name;
this.value = value;
}
}

26
shuili-system/src/main/java/com/kms/yxgh/base/enums/RecordStatus.java

@ -0,0 +1,26 @@
package com.kms.yxgh.base.enums;
import lombok.Getter;
/**
* @ClassName: RecordStatus
* @Description: TODO
* @Date: 2023/11/15 上午11:56 *
* @author: hxh
* @version: 1.0
*/
@Getter
public enum RecordStatus {
CHECKING("检查中", 0L),
FINISHED("已完成", 1L);
private final Long value;
private final String name;
RecordStatus(String name, Long value) {
this.name = name;
this.value = value;
}
}

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

@ -0,0 +1,88 @@
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.StartPlan;
import com.kms.yxgh.df.domain.entity.DfRecord;
import com.kms.yxgh.df.service.DfRecordService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 堤防巡视检查记录Controller
*
* @author sy
* @date 2023-11-09
*/
@RestController
@AllArgsConstructor
@RequestMapping("/run/df/record")
@Api(tags = "堤防巡视检查记录")
public class DfRecordController {
private final DfRecordService dfRecordService;
/**
* 查询堤防巡视检查记录列表
*/
@PostMapping("/list")
@ApiOperation("堤防巡视检查记录列表")
public IPage<DfRecord> list(@RequestBody SearchParam<DfRecord> sp) {
return dfRecordService.selectPage(sp);
}
/**
* 获取堤防巡视检查记录详细信息
*/
@ApiOperation(" 堤防巡视检查记录详情")
@GetMapping(value = "/{id}")
public Response<DfRecordDetailDto> getInfo(@PathVariable("id") String id) {
return Response.ok(dfRecordService.getDetailById(id));
}
/**
* 新增堤防巡视检查记录
*/
@Log(title = "堤防巡视检查记录新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("堤防巡视检查记录新增")
public Response<DfRecordDetailDto> add(@RequestBody StartPlan startPlan) {
return Response.ok(dfRecordService.start(startPlan));
}
/**
* 修改堤防巡视检查记录
*/
@ApiOperation("堤防巡视检查记录修改")
@Log(title = "堤防巡视检查记录修改", businessType = BusinessType.UPDATE)
@PutMapping
public Response<DfRecordDetailDto> edit(@RequestBody DfRecordDetailDto dfRecord) {
return Response.ok(dfRecordService.update(dfRecord));
}
/**
* 删除堤防巡视检查记录
*/
@ApiOperation("堤防巡视检查记录删除")
@Log(title = "堤防巡视检查记录删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public Response<Boolean> remove(@PathVariable String id) {
return Response.ok(dfRecordService.deleteById(id));
}
}

104
shuili-system/src/main/java/com/kms/yxgh/df/controller/DfTraceController.java

@ -2,24 +2,17 @@ package com.kms.yxgh.df.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.common.utils.BaseEntityUtils;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.df.domain.entity.DfTrace;
import com.kms.yxgh.df.service.DfTraceService;
import com.shuili.common.annotation.Log;
import com.shuili.common.core.controller.BaseController;
import com.shuili.common.core.domain.AjaxResult;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.enums.BusinessType;
import com.shuili.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -34,75 +27,30 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/run/df/trace")
@Api(tags = "堤防巡视检查检查记录轨迹")
public class DfTraceController extends BaseController
{
@Autowired
private DfTraceService dfTraceService;
public class DfTraceController extends BaseController {
@Autowired
private DfTraceService dfTraceService;
/**
* 查询堤防巡视检查检查记录轨迹列表
*/
@PostMapping("/list")
@ApiOperation("堤防巡视检查检查记录轨迹列表")
public IPage list(@RequestBody SearchParam<DfTrace> sp) {
return dfTraceService.selectPage(sp);
}
/**
* 新增堤防巡视检查检查记录轨迹
*/
@Log(title = "堤防巡视检查检查记录轨迹新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("堤防巡视检查检查记录轨迹新增")
public Response<Boolean> add(@RequestBody DfTrace dfTrace) {
BaseEntityUtils.preInsert(dfTrace);
dfTraceService.save(dfTrace);
return Response.ok();
}
/**
* 查询堤防巡视检查检查记录轨迹列表
*/
@PostMapping("/list")
@ApiOperation("堤防巡视检查检查记录轨迹列表")
public IPage list(@RequestBody SearchParam<DfTrace> sp)
{
return dfTraceService.selectPage(sp);
}
/**
* 导出堤防巡视检查检查记录轨迹列表
*/
@Log(title = "堤防巡视检查检查记录轨迹导出", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ApiOperation("堤防巡视检查检查记录轨迹导出")
public AjaxResult export(@RequestBody DfTrace dfTrace)
{
List<DfTrace> list = dfTraceService.listByIds(dfTrace.getIds());
ExcelUtil<DfTrace> util = new ExcelUtil<>(DfTrace.class);
return util.exportExcel(list, "trace");
}
/**
* 获取堤防巡视检查检查记录轨迹详细信息
*/
@ApiOperation(" 堤防巡视检查检查记录轨迹详情")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(dfTraceService.getById(id));
}
/**
* 新增堤防巡视检查检查记录轨迹
*/
@Log(title = "堤防巡视检查检查记录轨迹新增", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("堤防巡视检查检查记录轨迹新增")
public AjaxResult add(@RequestBody DfTrace dfTrace)
{
BaseEntityUtils.preInsert(dfTrace);
return toAjax(dfTraceService.save(dfTrace));
}
/**
* 修改堤防巡视检查检查记录轨迹
*/
@ApiOperation("堤防巡视检查检查记录轨迹修改")
@Log(title = "堤防巡视检查检查记录轨迹修改", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DfTrace dfTrace)
{
return toAjax(dfTraceService.updateById(dfTrace));
}
/**
* 删除堤防巡视检查检查记录轨迹
*/
@ApiOperation("堤防巡视检查检查记录轨迹删除")
@Log(title = "堤防巡视检查检查记录轨迹删除", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(dfTraceService.removeByIds(Arrays.asList(ids)));
}
}

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

@ -0,0 +1,54 @@
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: DfRecordDetailDto
* @Description: TODO
* @Date: 2023/11/15 上午10:36 *
* @author: hxh
* @version: 1.0
*/
@Data
@ApiModel("堤防巡视检查记录详情")
public class DfRecordDetailDto {
@ApiModelProperty("巡查记录")
private String id;
@ApiModelProperty("巡查计划ID")
private String planId;
@ApiModelProperty("巡查记录名称")
private String name;
@ApiModelProperty("状态")
private Long status;
@ApiModelProperty("巡查项")
private List<DfRecordItemDto> items;
@Data
public static class DfRecordItemDto {
@ApiModelProperty("主键")
private String id;
@ApiModelProperty("检查部位")
private List<String> parts;
@ApiModelProperty("检查内容")
private String content;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("存在问题")
private String problem;
}
}

20
shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/StartPlan.java

@ -0,0 +1,20 @@
package com.kms.yxgh.df.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName: StartPlan
* @Description: TODO
* @Date: 2023/11/15 上午10:43 *
* @author: hxh
* @version: 1.0
*/
@ApiModel("开启堤防巡视检查计划")
@Data
public class StartPlan {
@ApiModelProperty("计划id")
private String planId;
}

4
shuili-system/src/main/java/com/kms/yxgh/df/service/DfCheckingService.java

@ -36,7 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
public class DfCheckingService extends BaseService<DfCheckingMapper, DfChecking> {
private final DfCheckingItemMapper dfCheckingItemMapper;
private final static String PART_SEPARATOR = ":";
public final static String PART_SEPARATOR = ":";
public List<DfChecking> selectSimple(SearchParam<DfChecking> sp) {
Wrapper<DfChecking> wp = Wrappers.<DfChecking>lambdaQuery()
@ -57,7 +57,7 @@ public class DfCheckingService extends BaseService<DfCheckingMapper, DfChecking>
DfCheckingItemDto itemDto = new DfCheckingItemDto();
itemDto.setContent(o.getContent());
itemDto.setId(o.getId());
itemDto.setParts(Arrays.stream(StringUtils.split(o.getParts(), ":"))
itemDto.setParts(Arrays.stream(StringUtils.split(o.getParts(), PART_SEPARATOR))
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()));
return itemDto;
}));

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

@ -1,9 +1,35 @@
package com.kms.yxgh.df.service;
import com.shuili.common.core.service.BaseService;
import com.kms.yxgh.df.mapper.DfRecordMapper;
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.toolkit.Wrappers;
import com.kms.common.utils.BaseEntityUtils;
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.StartPlan;
import com.kms.yxgh.df.domain.entity.DfRecord;
import com.kms.yxgh.df.domain.entity.DfRecordItem;
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.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.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 堤防巡视检查记录Service接口
@ -12,6 +38,95 @@ import org.springframework.stereotype.Service;
* @date 2023-11-09
*/
@Service
public class DfRecordService extends BaseService<DfRecordMapper, DfRecord>{
@AllArgsConstructor
public class DfRecordService extends BaseService<DfRecordMapper, DfRecord> {
private final DfRecordItemMapper dfRecordItemMapper;
private final DfCheckingService dfCheckingService;
private final DfPlanService dfPlanService;
@Transactional(rollbackFor = Exception.class)
public DfRecordDetailDto start(StartPlan startPlan) {
DfPlanDetailDto planDetailDto = dfPlanService.getDetailById(startPlan.getPlanId());
if (planDetailDto != null) {
DfCheckingDetailDto checkingDetailDto = dfCheckingService.getDetailById(
planDetailDto.getXcId());
if (checkingDetailDto != null) {
DfRecord record = new DfRecord();
record.setPlanId(startPlan.getPlanId());
record.setName(planDetailDto.getName() + DateUtils.dateTimeNow());
record.setStatus(RecordStatus.CHECKING.getValue());
BaseEntityUtils.preInsert(record);
String id = record.getId();
if (CollectionUtil.isNotEmpty(checkingDetailDto.getItems())) {
checkingDetailDto.getItems().forEach(o -> {
DfRecordItem item = new DfRecordItem();
item.setRecordId(id);
item.setContent(o.getContent());
item.setParts(String.join(PART_SEPARATOR, o.getParts()));
item.setStatus(CheckingStatus.NORMAL.getValue());
item.setRecordId("");
BaseEntityUtils.preInsert(item);
dfRecordItemMapper.insert(item);
});
}
return this.getDetailById(id);
} else {
throw new BaseException("查询巡查检查项数据异常");
}
}
throw new BaseException("查询巡查计划");
}
public DfRecordDetailDto getDetailById(String id) {
DfRecord record = this.getBaseMapper().selectById(id);
if (record != null) {
DfRecordDetailDto dto = BeanCopyUtils.copy(record, DfRecordDetailDto.class);
Wrapper<DfRecordItem> wp = Wrappers.<DfRecordItem>lambdaQuery()
.eq(DfRecordItem::getRecordId, id);
List<DfRecordItem> items = dfRecordItemMapper.selectList(wp);
if (CollectionUtil.isNotEmpty(items) && dto != null) {
dto.setItems(StreamUtils.toList(items, r -> {
DfRecordItemDto itemDto = BeanCopyUtils.copy(r, DfRecordItemDto.class);
if (itemDto != null) {
itemDto.setParts(Arrays.stream(StringUtils.split(r.getParts(), PART_SEPARATOR))
.sorted(Comparator.comparingInt(String::length)).collect(Collectors.toList()));
}
return itemDto;
}));
return dto;
}
}
return null;
}
public DfRecordDetailDto update(DfRecordDetailDto dfRecord) {
if (CollectionUtil.isNotEmpty(dfRecord.getItems())) {
dfRecord.getItems().forEach(o -> {
DfRecordItem item = new DfRecordItem();
item.setRecordId(dfRecord.getId());
item.setContent(o.getContent());
item.setParts(String.join(PART_SEPARATOR, o.getParts()));
item.setStatus(o.getStatus());
item.setProblem(o.getProblem());
BaseEntityUtils.preUpdate(item);
dfRecordItemMapper.updateById(item);
});
}
return dfRecord;
}
public Boolean deleteById(String id) {
boolean rt = removeById(id);
if (rt) {
deleteItems(id);
}
return rt;
}
private void deleteItems(String id) {
Wrapper<DfRecordItem> wp = Wrappers.<DfRecordItem>lambdaQuery()
.eq(DfRecordItem::getRecordId, id);
dfRecordItemMapper.delete(wp);
}
}

Loading…
Cancel
Save