From c2a0f1714bb6199fbf4e6cf5106c30168f825919 Mon Sep 17 00:00:00 2001 From: hxh <762326930@qq.com> Date: Wed, 15 Nov 2023 15:12:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B7=A1=E6=9F=A5?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kms/yxgh/base/enums/CheckingStatus.java | 26 ++++ .../com/kms/yxgh/base/enums/RecordStatus.java | 26 ++++ .../df/controller/DfRecordController.java | 88 +++++++++++++ .../yxgh/df/controller/DfTraceController.java | 104 ++++----------- .../yxgh/df/domain/dto/DfRecordDetailDto.java | 54 ++++++++ .../com/kms/yxgh/df/domain/dto/StartPlan.java | 20 +++ .../yxgh/df/service/DfCheckingService.java | 4 +- .../kms/yxgh/df/service/DfRecordService.java | 121 +++++++++++++++++- 8 files changed, 360 insertions(+), 83 deletions(-) create mode 100644 shuili-system/src/main/java/com/kms/yxgh/base/enums/CheckingStatus.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/base/enums/RecordStatus.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java create mode 100644 shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/StartPlan.java diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/enums/CheckingStatus.java b/shuili-system/src/main/java/com/kms/yxgh/base/enums/CheckingStatus.java new file mode 100644 index 00000000..0cf416e8 --- /dev/null +++ b/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; + } +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/base/enums/RecordStatus.java b/shuili-system/src/main/java/com/kms/yxgh/base/enums/RecordStatus.java new file mode 100644 index 00000000..6e40c8cc --- /dev/null +++ b/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; + } +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java b/shuili-system/src/main/java/com/kms/yxgh/df/controller/DfRecordController.java new file mode 100644 index 00000000..2fdc2495 --- /dev/null +++ b/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 list(@RequestBody SearchParam sp) { + return dfRecordService.selectPage(sp); + } + + + /** + * 获取堤防巡视检查记录详细信息 + */ + @ApiOperation(" 堤防巡视检查记录详情") + @GetMapping(value = "/{id}") + public Response getInfo(@PathVariable("id") String id) { + return Response.ok(dfRecordService.getDetailById(id)); + } + + /** + * 新增堤防巡视检查记录 + */ + @Log(title = "堤防巡视检查记录新增", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("堤防巡视检查记录新增") + public Response add(@RequestBody StartPlan startPlan) { + return Response.ok(dfRecordService.start(startPlan)); + } + + /** + * 修改堤防巡视检查记录 + */ + @ApiOperation("堤防巡视检查记录修改") + @Log(title = "堤防巡视检查记录修改", businessType = BusinessType.UPDATE) + @PutMapping + public Response edit(@RequestBody DfRecordDetailDto dfRecord) { + return Response.ok(dfRecordService.update(dfRecord)); + } + + /** + * 删除堤防巡视检查记录 + */ + @ApiOperation("堤防巡视检查记录删除") + @Log(title = "堤防巡视检查记录删除", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public Response remove(@PathVariable String id) { + return Response.ok(dfRecordService.deleteById(id)); + } + +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/controller/DfTraceController.java b/shuili-system/src/main/java/com/kms/yxgh/df/controller/DfTraceController.java index 8bcf0456..294145de 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/df/controller/DfTraceController.java +++ b/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 sp) { + return dfTraceService.selectPage(sp); + } + + /** + * 新增堤防巡视检查检查记录轨迹 + */ + @Log(title = "堤防巡视检查检查记录轨迹新增", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("堤防巡视检查检查记录轨迹新增") + public Response add(@RequestBody DfTrace dfTrace) { + BaseEntityUtils.preInsert(dfTrace); + dfTraceService.save(dfTrace); + return Response.ok(); + } - /** - * 查询堤防巡视检查检查记录轨迹列表 - */ - @PostMapping("/list") - @ApiOperation("堤防巡视检查检查记录轨迹列表") - public IPage list(@RequestBody SearchParam sp) - { - return dfTraceService.selectPage(sp); - } - - /** - * 导出堤防巡视检查检查记录轨迹列表 - */ - @Log(title = "堤防巡视检查检查记录轨迹导出", businessType = BusinessType.EXPORT) - @PostMapping("/export") - @ApiOperation("堤防巡视检查检查记录轨迹导出") - public AjaxResult export(@RequestBody DfTrace dfTrace) - { - List list = dfTraceService.listByIds(dfTrace.getIds()); - ExcelUtil 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))); - } } diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java b/shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/DfRecordDetailDto.java new file mode 100644 index 00000000..f76d2ae0 --- /dev/null +++ b/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 items; + + @Data + + public static class DfRecordItemDto { + + @ApiModelProperty("主键") + private String id; + + @ApiModelProperty("检查部位") + private List parts; + + @ApiModelProperty("检查内容") + private String content; + + @ApiModelProperty("状态") + private Integer status; + + @ApiModelProperty("存在问题") + private String problem; + } +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/StartPlan.java b/shuili-system/src/main/java/com/kms/yxgh/df/domain/dto/StartPlan.java new file mode 100644 index 00000000..fd65fda8 --- /dev/null +++ b/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; +} diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfCheckingService.java b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfCheckingService.java index fa286f03..ef091829 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfCheckingService.java +++ b/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 { private final DfCheckingItemMapper dfCheckingItemMapper; - private final static String PART_SEPARATOR = ":"; + public final static String PART_SEPARATOR = ":"; public List selectSimple(SearchParam sp) { Wrapper wp = Wrappers.lambdaQuery() @@ -57,7 +57,7 @@ public class DfCheckingService extends BaseService 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; })); diff --git a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java b/shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java index ef5c07a9..b4021b32 100644 --- a/shuili-system/src/main/java/com/kms/yxgh/df/service/DfRecordService.java +++ b/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{ +@AllArgsConstructor +public class DfRecordService extends BaseService { + + 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 wp = Wrappers.lambdaQuery() + .eq(DfRecordItem::getRecordId, id); + List 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 wp = Wrappers.lambdaQuery() + .eq(DfRecordItem::getRecordId, id); + dfRecordItemMapper.delete(wp); + } }