From 67955cae03d759e2513ac24095cde448ed019205 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Wed, 15 May 2024 09:17:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E4=BF=9D=E5=85=BB?= =?UTF-8?q?=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/DeviceUpkeepController.java | 93 ++++++++ .../dev/DeviceUpkeepDetailController.java | 86 +++++++ .../dev/DeviceUpkeepDetailItemController.java | 77 +++++++ .../dao/dev/DeviceUpkeepDetailItemMapper.java | 15 ++ .../api/dao/dev/DeviceUpkeepDetailMapper.java | 15 ++ .../glxp/api/dao/dev/DeviceUpkeepMapper.java | 27 +++ .../entity/dev/DeviceCheckItemDictEntity.java | 8 +- .../dev/DevicePlanDetailItemEntity.java | 8 +- .../glxp/api/entity/dev/DevicePlanEntity.java | 6 + .../entity/dev/DeviceUpkeepDetailEntity.java | 192 ++++++++++++++++ .../dev/DeviceUpkeepDetailItemEntity.java | 110 +++++++++ .../api/entity/dev/DeviceUpkeepEntity.java | 140 ++++++++++++ .../api/req/dev/DeviceCheckItemDictParam.java | 8 + .../api/req/dev/DeviceCheckItemDictQuery.java | 1 + .../req/dev/DevicePlanDetailItemParam.java | 7 + .../com/glxp/api/req/dev/DevicePlanParam.java | 6 + .../com/glxp/api/req/dev/DevicePlanQuery.java | 2 + .../DeviceUpkeepDetailItemFinishParam.java | 33 +++ .../req/dev/DeviceUpkeepDetailItemQuery.java | 23 ++ .../api/req/dev/DeviceUpkeepDetailQuery.java | 17 ++ .../glxp/api/req/dev/DeviceUpkeepQuery.java | 13 ++ .../dev/DeviceUpkeepDetailItemService.java | 22 ++ .../dev/DeviceUpkeepDetailService.java | 27 +++ .../api/service/dev/DeviceUpkeepService.java | 45 ++++ .../DeviceCheckDetailItemServiceImpl.java | 1 + .../impl/DeviceCheckItemDictServiceImpl.java | 1 + .../dev/impl/DeviceCheckServiceImpl.java | 4 +- .../dev/impl/DeviceInfoServiceImpl.java | 3 + .../DeviceUpkeepDetailItemServiceImpl.java | 98 ++++++++ .../impl/DeviceUpkeepDetailServiceImpl.java | 100 ++++++++ .../dev/impl/DeviceUpkeepServiceImpl.java | 215 ++++++++++++++++++ .../glxp/api/vo/dev/DeviceUpkeepPrintVo.java | 34 +++ .../com/glxp/api/vo/dev/DeviceUpkeepVo.java | 12 + .../mybatis/mapper/dev/DevicePlanMapper.xml | 3 + .../mybatis/mapper/dev/DeviceUpkeepMapper.xml | 52 +++++ 35 files changed, 1501 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/dev/DeviceUpkeepController.java create mode 100644 src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailController.java create mode 100644 src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailItemController.java create mode 100644 src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailItemMapper.java create mode 100644 src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailMapper.java create mode 100644 src/main/java/com/glxp/api/dao/dev/DeviceUpkeepMapper.java create mode 100644 src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailEntity.java create mode 100644 src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailItemEntity.java create mode 100644 src/main/java/com/glxp/api/entity/dev/DeviceUpkeepEntity.java create mode 100644 src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemFinishParam.java create mode 100644 src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemQuery.java create mode 100644 src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailQuery.java create mode 100644 src/main/java/com/glxp/api/req/dev/DeviceUpkeepQuery.java create mode 100644 src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailItemService.java create mode 100644 src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailService.java create mode 100644 src/main/java/com/glxp/api/service/dev/DeviceUpkeepService.java create mode 100644 src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepDetailItemServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepDetailServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepServiceImpl.java create mode 100644 src/main/java/com/glxp/api/vo/dev/DeviceUpkeepPrintVo.java create mode 100644 src/main/java/com/glxp/api/vo/dev/DeviceUpkeepVo.java create mode 100644 src/main/resources/mybatis/mapper/dev/DeviceUpkeepMapper.xml diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepController.java b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepController.java new file mode 100644 index 000000000..0df53131f --- /dev/null +++ b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepController.java @@ -0,0 +1,93 @@ +package com.glxp.api.controller.dev; + +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.req.dev.DeviceUpkeepQuery; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.service.dev.DeviceUpkeepService; +import com.glxp.api.vo.dev.DeviceCheckPrintVo; +import com.glxp.api.vo.dev.DeviceUpkeepPrintVo; +import com.glxp.api.vo.dev.DeviceUpkeepVo; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@Slf4j +@RequestMapping +public class DeviceUpkeepController extends BaseController { + + private final DeviceUpkeepService deviceUpkeepService; + + /** + * 保养任务单列表 + * + * @param query + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udi/device/upkeep/page") + public BaseResponse page(@RequestBody DeviceUpkeepQuery query) { + List list = deviceUpkeepService.pageList(query); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse page = new PageSimpleResponse(); + page.setTotal(pageInfo.getTotal()); + page.setList(pageInfo.getList()); + return ResultVOUtils.success(page); + } + + /** + * 本部门巡检任务单列表 + * + * @param query + * @return +// */ +// @AuthRuleAnnotation("") +// @PostMapping("/udi/device/check/pageByDept") +// public BaseResponse pageByDept(@RequestBody DeviceCheckQuery query) { +// AuthAdmin user = super.getUser(); +// query.setChargeDeptCode(user.getLocDeptCode()); +// List list = deviceCheckService.pageList(query); +// PageInfo pageInfo = new PageInfo<>(list); +// PageSimpleResponse page = new PageSimpleResponse(); +// page.setTotal(pageInfo.getTotal()); +// page.setList(pageInfo.getList()); +// return ResultVOUtils.success(page); +// } + + /** + * 根据计划id生成巡检任务单 + * + * @param planId 计划id + * @return + */ + @AuthRuleAnnotation("") + @GetMapping("/udi/device/upkeep/gen/{planId}") + public BaseResponse genDeviceUpkeep(@PathVariable Long planId) { + AuthAdmin user = super.getUser(); + deviceUpkeepService.genByPlanId(planId, false, user); + return ResultVOUtils.successMsg("操作成功"); + } + + @AuthRuleAnnotation("") + @GetMapping("/udi/device/upkeep/info/print/{taskId}") + public BaseResponse checkInfoPrint(@PathVariable Long taskId) { + DeviceUpkeepPrintVo vo = deviceUpkeepService.checkInfoPrint(taskId, null); + return ResultVOUtils.success(vo); + } + + @AuthRuleAnnotation("") + @GetMapping("/udi/device/upkeep/info/print/{taskId}/{deviceCode}") + public BaseResponse checkInfoPrint(@PathVariable Long taskId, @PathVariable String deviceCode) { + DeviceUpkeepPrintVo vo = deviceUpkeepService.checkInfoPrint(taskId, deviceCode); + return ResultVOUtils.success(vo); + } + +} diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailController.java b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailController.java new file mode 100644 index 000000000..6cb4e46d0 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailController.java @@ -0,0 +1,86 @@ +package com.glxp.api.controller.dev; + +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.*; +import com.glxp.api.req.dev.*; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.service.dev.*; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequiredArgsConstructor +@Slf4j +@RequestMapping +public class DeviceUpkeepDetailController extends BaseController { + + + private final DeviceUpkeepDetailService deviceUpkeepDetailService; + + private final DevicePlanService devicePlanService; + + private final DeviceInfoService deviceInfoService; + private final DevicePlanDetailService devicePlanDetailService; + private final DeviceUpkeepDetailItemService deviceUpkeepDetailItemService; + /** + * 保养任务单明细列表 + * + * @param query + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udi/device/upkeep/detail/page") + public BaseResponse page(@RequestBody @Valid DeviceUpkeepDetailQuery query) { + List list = deviceUpkeepDetailService.pageList(query); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse page = new PageSimpleResponse(); + page.setTotal(pageInfo.getTotal()); + page.setList(pageInfo.getList()); + return ResultVOUtils.success(page); + } + + + /** + * 设备保养计划明细新增 + * + * @param param 参数 + * @return 计划id + */ + @AuthRuleAnnotation("") + @PostMapping("/udi/device/upkeep/detail/add") + public BaseResponse add(@RequestBody @Valid DevicePlanDetailParam param) { + + + DevicePlanEntity entity = null; + if (!param.valid(devicePlanService)) { + AuthAdmin user = super.getUser(); + entity = param.getDevicePlanParam().getEntity(user); + devicePlanService.save(entity); + param.getDevicePlanParam().setPlanId(entity.getPlanId()); + param.setPlanId(entity.getPlanId()); + } else { + entity = devicePlanService.getById(param.getPlanId()); + } + param.valid(devicePlanService); + List list = param.getEntity(deviceInfoService); + devicePlanDetailService.replaceBatch(list); + return ResultVOUtils.success(entity); + } + + + + + +} diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailItemController.java b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailItemController.java new file mode 100644 index 000000000..c88218dec --- /dev/null +++ b/src/main/java/com/glxp/api/controller/dev/DeviceUpkeepDetailItemController.java @@ -0,0 +1,77 @@ +package com.glxp.api.controller.dev; + +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.DeviceCheckDetailItemEntity; +import com.glxp.api.entity.dev.DeviceUpkeepDetailItemEntity; +import com.glxp.api.req.dev.DeviceCheckDetailItemFinishParam; +import com.glxp.api.req.dev.DeviceCheckDetailItemQuery; +import com.glxp.api.req.dev.DeviceUpkeepDetailItemFinishParam; +import com.glxp.api.req.dev.DeviceUpkeepDetailItemQuery; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.service.dev.DeviceCheckDetailItemService; +import com.glxp.api.service.dev.DeviceUpkeepDetailItemService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +/** + * 设备巡检单明细 + */ +@RestController +@RequiredArgsConstructor +@Slf4j +@RequestMapping +public class DeviceUpkeepDetailItemController extends BaseController { + + private final DeviceUpkeepDetailItemService deviceUpkeepDetailItemService; + + /** + * 巡检任务单明细项目列表 + * + * @param query + * @return + */ + /** + * 保养任务单明细项目列表 + * + * @param query + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udi/device/upkeep/detail/item/page") + public BaseResponse page(@RequestBody @Valid DeviceUpkeepDetailItemQuery query) { + List list = deviceUpkeepDetailItemService.pageList(query); + PageInfo pageInfo = new PageInfo<>(list); + PageSimpleResponse page = new PageSimpleResponse(); + page.setTotal(pageInfo.getTotal()); + page.setList(pageInfo.getList()); + return ResultVOUtils.success(page); + } + + /** + * 完成巡检任务单明细项目 + * + * @param param + * @return + */ + @AuthRuleAnnotation("") + @PostMapping("/udi/device/upkeep/detail/item/finish") + public BaseResponse page(@RequestBody @Valid DeviceUpkeepDetailItemFinishParam param) { + AuthAdmin user = super.getUser(); + deviceUpkeepDetailItemService.finish(param, user); + return ResultVOUtils.successMsg("操作成功"); + } + + +} diff --git a/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailItemMapper.java b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailItemMapper.java new file mode 100644 index 000000000..59cba6bcc --- /dev/null +++ b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailItemMapper.java @@ -0,0 +1,15 @@ +package com.glxp.api.dao.dev; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.dev.DeviceUpkeepDetailItemEntity; + +/** +* 针对表【device_upkeep_detail_item(设备保养项目)】的数据库操作Mapper +*/ +public interface DeviceUpkeepDetailItemMapper extends BaseMapperPlus { + +} + + + + diff --git a/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailMapper.java b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailMapper.java new file mode 100644 index 000000000..00eda3c76 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepDetailMapper.java @@ -0,0 +1,15 @@ +package com.glxp.api.dao.dev; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.dev.DeviceUpkeepDetailEntity; + +/** +* 针对表【device_upkeep_detail(保养任务明细)】的数据库操作Mapper +*/ +public interface DeviceUpkeepDetailMapper extends BaseMapperPlus { + +} + + + + diff --git a/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepMapper.java b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepMapper.java new file mode 100644 index 000000000..00e118328 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/dev/DeviceUpkeepMapper.java @@ -0,0 +1,27 @@ +package com.glxp.api.dao.dev; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.dev.DeviceCheckEntity; +import com.glxp.api.entity.dev.DeviceUpkeepEntity; +import com.glxp.api.req.dev.DeviceCheckQuery; +import com.glxp.api.req.dev.DeviceUpkeepQuery; +import com.glxp.api.vo.dev.DeviceCheckVo; +import com.glxp.api.vo.dev.DeviceUpkeepVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* 针对表【device_upkeep(保养任务表)】的数据库操作Mapper +*/ +public interface DeviceUpkeepMapper extends BaseMapperPlus { + + List pageVo(DeviceUpkeepQuery query); + + + DeviceUpkeepVo getVoById(@Param("taskId") Long taskId); +} + + + + diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceCheckItemDictEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceCheckItemDictEntity.java index 06c8f0d03..9718be74d 100644 --- a/src/main/java/com/glxp/api/entity/dev/DeviceCheckItemDictEntity.java +++ b/src/main/java/com/glxp/api/entity/dev/DeviceCheckItemDictEntity.java @@ -56,4 +56,10 @@ public class DeviceCheckItemDictEntity { */ @TableField(value = "createTime") private LocalDateTime createTime; -} \ No newline at end of file + + /** + * 项目类型 + */ + @TableField(value = "type") + private Integer type; +} diff --git a/src/main/java/com/glxp/api/entity/dev/DevicePlanDetailItemEntity.java b/src/main/java/com/glxp/api/entity/dev/DevicePlanDetailItemEntity.java index 199f8f11d..9ae2cbf59 100644 --- a/src/main/java/com/glxp/api/entity/dev/DevicePlanDetailItemEntity.java +++ b/src/main/java/com/glxp/api/entity/dev/DevicePlanDetailItemEntity.java @@ -57,4 +57,10 @@ public class DevicePlanDetailItemEntity { */ @TableField(value = "content") private String content; -} \ No newline at end of file + + /** + * + */ + @TableField(value = "type") + private Integer type; +} diff --git a/src/main/java/com/glxp/api/entity/dev/DevicePlanEntity.java b/src/main/java/com/glxp/api/entity/dev/DevicePlanEntity.java index 93a71ed06..f6dee2f85 100644 --- a/src/main/java/com/glxp/api/entity/dev/DevicePlanEntity.java +++ b/src/main/java/com/glxp/api/entity/dev/DevicePlanEntity.java @@ -93,6 +93,12 @@ public class DevicePlanEntity { */ @TableField(value = "status") private Integer status; + /** + * 项目类型 + */ + @TableField(value = "type") + private Integer type; + /** * 创建时间 diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailEntity.java new file mode 100644 index 000000000..ed74cc016 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailEntity.java @@ -0,0 +1,192 @@ +package com.glxp.api.entity.dev; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 巡检任务明细 + * + * @TableName device_upkeep_detail + */ +@TableName(value = "device_upkeep_detail") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class DeviceUpkeepDetailEntity { + /** + * 任务id + */ + @TableField(value = "taskId") + private Long taskId; + + /** + * 设备编码 + */ + @TableField(value = "deviceCode") + private String deviceCode; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 部门名称 + */ + @TableField(value = "deptName") + private String deptName; + + /** + * 是否完成 + */ + @TableField(value = "finishFlag") + private Boolean finishFlag; + + /** + * 产品id + */ + @TableField(value = "productId") + private Long productId; + + /** + * UDI码 + */ + @TableField(value = "udi") + private String udi; + + /** + * DI码 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 产品名称 + */ + @TableField(value = "productName") + private String productName; + + /** + * 规格型号 + */ + @TableField(value = "ggxh") + private String ggxh; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 生产日期 + */ + @TableField(value = "productionDate") + private String productionDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 生产厂家 + */ + @TableField(value = "manufactory") + private String manufactory; + + /** + * 计量单位 + */ + @TableField(value = "measname") + private String measname; + + /** + * 注册/备案凭证号 + */ + @TableField(value = "zczbhhzbapzbh") + private String zczbhhzbapzbh; + + /** + * 供应商ID + */ + @TableField(value = "supId") + private String supId; + + /** + * 供应商名称 + */ + @TableField(value = "supName") + private String supName; + + /** + * 巡检项目数量 + */ + @TableField(value = "itemCount") + private Integer itemCount; + + /** + * 完成项目数量 + */ + @TableField(value = "finishCount") + private Integer finishCount; + + /** + * 异常项目数量 + */ + @TableField(value = "exceptionCount") + private Integer exceptionCount; + + /** + * 完成时间 + */ + @TableField(value = "finishTime") + private LocalDateTime finishTime; + + /** + * 维修单id + */ +// @TableField(value = "repairId") +// private Long repairId; + + /** + * 巡检建议 + */ + @TableField(value = "suggestion") + private String suggestion; + /** + * 现场照片 + */ + @TableField(value = "livePath") + private String livePath; + /** + * 正常标识 + */ + @TableField(value = "normalFlag") + private Boolean normalFlag; + + + /** + * 更改时间 + */ + @TableField(value = "updateTime") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailItemEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailItemEntity.java new file mode 100644 index 000000000..f469673c1 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepDetailItemEntity.java @@ -0,0 +1,110 @@ +package com.glxp.api.entity.dev; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 设备保养项目 + * + * @TableName device_upkeep_detail_item + */ +@TableName(value = "device_upkeep_detail_item") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class DeviceUpkeepDetailItemEntity { + /** + * 任务id + */ + @TableField(value = "taskId") + private Long taskId; + + /** + * 设备编码 + */ + @TableField(value = "deviceCode") + private String deviceCode; + + /** + * 项目编码 + */ + @TableField(value = "itemCode") + private String itemCode; + + /** + * 项目名称 + */ + @TableField(value = "itemName") + private String itemName; + + /** + * 项目内容 + */ + @TableField(value = "itemContent") + private String itemContent; + + /** + * 正常标识 + */ + @TableField(value = "normalFlag") + private Boolean normalFlag; + + + /** + * 项目完成标识 + */ + @TableField(value = "finishFlag") + private Boolean finishFlag; + + + /** + * 项目完成时间 + */ + @TableField(value = "finishTime") + private LocalDateTime finishTime; + + /** + * 保养建议 + */ + @TableField(value = "suggestion") + private String suggestion; + + /** + * 保养人id + */ + @TableField(value = "upkeepUserId") + private Long upkeepUserId; + + /** + * 保养人姓名 + */ + @TableField(value = "upkeepUserName") + private String upkeepUserName; + + /** + * 保养部门 + */ + @TableField(value = "upkeepDeptCode") + private String upkeepDeptCode; + + /** + * 保养部门名称 + */ + @TableField(value = "upkeepDeptName") + private String upkeepDeptName; + + /** + * 更改时间 + */ + @TableField(value = "updateTime") + private LocalDateTime updateTime; +} diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepEntity.java new file mode 100644 index 000000000..e42f6d70d --- /dev/null +++ b/src/main/java/com/glxp/api/entity/dev/DeviceUpkeepEntity.java @@ -0,0 +1,140 @@ +package com.glxp.api.entity.dev; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 保养任务表 + * + * @TableName device_upkeep + */ +@TableName(value = "device_upkeep") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class DeviceUpkeepEntity { + /** + * 保养任务id + */ + @TableId(value = "taskId") + private Long taskId; + + /** + * 计划id + */ + @TableField(value = "planId") + private Long planId; + + /** + * 计划名称 + */ + @TableField(value = "planName") + private String planName; + + /** + * 负责部门编码 + */ + @TableField(value = "chargeDeptCode") + private String chargeDeptCode; + + /** + * 保养人id + */ + @TableField(value = "upkeepUserId") + private Long upkeepUserId; + + /** + * 保养人姓名 + */ + @TableField(value = "upkeepUserName") + private String upkeepUserName; + + /** + * 保养人电话 + */ + @TableField(value = "upkeepUserPhone") + private String upkeepUserPhone; + + /** + * 设备数量 + */ + @TableField(value = "deviceCount") + private Integer deviceCount; + + /** + * 完成设备数量 + */ + @TableField(value = "finishCount") + private Integer finishCount; + + /** + * 异常设备数量 + */ + @TableField(value = "exceptionCount") + private Integer exceptionCount; + + /** + * 任务名称 + */ + @TableField(value = "name") + private String name; + + /** + * 任务备注 + */ + @TableField(value = "remark") + private String remark; + + /** + * 是否系统创建 1/true 是 0/false 否 + */ + @TableField(value = "sysFlag") + private Boolean sysFlag; + + /** + * 是否已完成 1/true 是 0/false 否 + */ + @TableField(value = "finishFlag") + private Boolean finishFlag; + + /** + * 完成时间 + */ + @TableField(value = "finishTime") + private LocalDateTime finishTime; + + /** + * 创建时间 updateTime + */ + @TableField(value = "createTime") + private LocalDateTime createTime; + + /** + * 创建人id + */ + @TableField(value = "createUserId") + private Long createUserId; + + /** + * 创建人姓名 + */ + @TableField(value = "createUserName") + private String createUserName; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictParam.java b/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictParam.java index f349ad53e..7c1bf2e04 100644 --- a/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictParam.java +++ b/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictParam.java @@ -32,12 +32,20 @@ public class DeviceCheckItemDictParam { @NotBlank(message = "项目内容不能为空") private String content; + /** + * 项目类型 + * @param user + * @return + */ + private Integer type; + public DeviceCheckItemDictEntity getEntity(AuthAdmin user) { DeviceCheckItemDictEntity build = DeviceCheckItemDictEntity.builder() .code(code) .name(name) .content(content) + .type(type) .createUserId(user.getCustomerId()) .createUserName(user.getEmployeeName()) .createTime(LocalDateTime.now()) diff --git a/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictQuery.java b/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictQuery.java index 0bec15f8e..e3577e83c 100644 --- a/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictQuery.java +++ b/src/main/java/com/glxp/api/req/dev/DeviceCheckItemDictQuery.java @@ -16,4 +16,5 @@ public class DeviceCheckItemDictQuery extends ListPageRequest { */ private String name; + private Integer type; } diff --git a/src/main/java/com/glxp/api/req/dev/DevicePlanDetailItemParam.java b/src/main/java/com/glxp/api/req/dev/DevicePlanDetailItemParam.java index f143ae9d6..302a01e18 100644 --- a/src/main/java/com/glxp/api/req/dev/DevicePlanDetailItemParam.java +++ b/src/main/java/com/glxp/api/req/dev/DevicePlanDetailItemParam.java @@ -36,6 +36,12 @@ public class DevicePlanDetailItemParam { String deviceCode; + /** + * 项目类型 + */ + Integer type; + + @NotEmpty(message = "巡检项目不能为空") Set itemCodes; @@ -71,6 +77,7 @@ public class DevicePlanDetailItemParam { DevicePlanDetailItemEntity build = DevicePlanDetailItemEntity.builder() .planId(planId) .productId(productId) + .type(type) .deviceCode(StrUtil.blankToDefault(deviceCode, "")) .itemCode(i.getCode()) .name(i.getName()) diff --git a/src/main/java/com/glxp/api/req/dev/DevicePlanParam.java b/src/main/java/com/glxp/api/req/dev/DevicePlanParam.java index ad5c042d2..45427a411 100644 --- a/src/main/java/com/glxp/api/req/dev/DevicePlanParam.java +++ b/src/main/java/com/glxp/api/req/dev/DevicePlanParam.java @@ -58,6 +58,11 @@ public class DevicePlanParam { */ private Integer status; + /** + * 项目类型 + */ + private Integer type; + /** * 备注 */ @@ -88,6 +93,7 @@ public class DevicePlanParam { .frequency(frequency) .status(status == null ? 1 : status) .remark(remark) + .type(type) .build(); if (!isUpdate) { build.setCreateUserId(user.getId()).setCreateUserName(user.getEmployeeName()).setCreateTime(LocalDateTime.now()); diff --git a/src/main/java/com/glxp/api/req/dev/DevicePlanQuery.java b/src/main/java/com/glxp/api/req/dev/DevicePlanQuery.java index ddf3dceb0..0be481573 100644 --- a/src/main/java/com/glxp/api/req/dev/DevicePlanQuery.java +++ b/src/main/java/com/glxp/api/req/dev/DevicePlanQuery.java @@ -13,4 +13,6 @@ public class DevicePlanQuery extends ListPageRequest { */ String chargeDeptCode; + Integer type; + } diff --git a/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemFinishParam.java b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemFinishParam.java new file mode 100644 index 000000000..5d5906971 --- /dev/null +++ b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemFinishParam.java @@ -0,0 +1,33 @@ +package com.glxp.api.req.dev; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DeviceUpkeepDetailItemFinishParam { + + @NotNull(message = "任务单标识不能为空") + private Long taskId; + + @NotBlank(message = "设备标识不能为空") + private String deviceCode; + + @NotNull(message = "项目标识不能为空") + private String itemCode; + + @NotNull(message = "请标记巡检状态") + private Boolean normalFlag; + + @NotBlank(message = "巡检意见不能为空") + private String suggestion; + + +} diff --git a/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemQuery.java b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemQuery.java new file mode 100644 index 000000000..f36aa8b9b --- /dev/null +++ b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailItemQuery.java @@ -0,0 +1,23 @@ +package com.glxp.api.req.dev; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class DeviceUpkeepDetailItemQuery extends ListPageRequest { + + /** + * 任务单标识 + */ + private Long taskId; + + /** + * 设备标识 + */ + @NotBlank(message = "设备标识不能为空") + private String deviceCode; + + +} diff --git a/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailQuery.java b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailQuery.java new file mode 100644 index 000000000..8e8a5799e --- /dev/null +++ b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepDetailQuery.java @@ -0,0 +1,17 @@ +package com.glxp.api.req.dev; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class DeviceUpkeepDetailQuery extends ListPageRequest { + + @NotNull(message = "任务单标识不能为空") + private Long taskId; + + private String deviceCode; + + +} diff --git a/src/main/java/com/glxp/api/req/dev/DeviceUpkeepQuery.java b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepQuery.java new file mode 100644 index 000000000..32adad689 --- /dev/null +++ b/src/main/java/com/glxp/api/req/dev/DeviceUpkeepQuery.java @@ -0,0 +1,13 @@ +package com.glxp.api.req.dev; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +@Data +public class DeviceUpkeepQuery extends ListPageRequest { + + String taskId; + String chargeDeptCode; + Boolean finishFlag; + +} diff --git a/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailItemService.java b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailItemService.java new file mode 100644 index 000000000..1477ece9b --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailItemService.java @@ -0,0 +1,22 @@ +package com.glxp.api.service.dev; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.DeviceCheckDetailItemEntity; +import com.glxp.api.entity.dev.DeviceUpkeepDetailItemEntity; +import com.glxp.api.req.dev.*; + +import java.util.List; + +/** + * 针对表【device_upkeep_detail_item(设备保养项目)】的数据库操作Service + */ +public interface DeviceUpkeepDetailItemService extends IService { + + + List listByTaskId(Long taskId, String deviceCode); + + List pageList(DeviceUpkeepDetailItemQuery query); + + void finish(DeviceUpkeepDetailItemFinishParam param, AuthAdmin user); +} diff --git a/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailService.java b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailService.java new file mode 100644 index 000000000..0fd37e977 --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepDetailService.java @@ -0,0 +1,27 @@ +package com.glxp.api.service.dev; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.DeviceCheckDetailEntity; +import com.glxp.api.entity.dev.DeviceUpkeepDetailEntity; +import com.glxp.api.req.dev.DeviceUpkeepDetailQuery; + +import java.util.List; + +/** + * 针对表【device_upkeep_detail(保养任务明细)】的数据库操作Service + */ +public interface DeviceUpkeepDetailService extends IService { + + + List pageList(DeviceUpkeepDetailQuery query); + + + + + List listByTaskId(Long taskId, String deviceCode); + DeviceUpkeepDetailEntity getOne(Long taskId, String deviceCode); + + + void finishItem(Long taskId, String deviceCode, String deptCode, Boolean normalFlag, AuthAdmin user); +} diff --git a/src/main/java/com/glxp/api/service/dev/DeviceUpkeepService.java b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepService.java new file mode 100644 index 000000000..41e183afd --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/DeviceUpkeepService.java @@ -0,0 +1,45 @@ +package com.glxp.api.service.dev; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.DeviceUpkeepEntity; +import com.glxp.api.req.dev.DeviceUpkeepQuery; +import com.glxp.api.vo.dev.DeviceCheckPrintVo; +import com.glxp.api.vo.dev.DeviceCheckVo; +import com.glxp.api.vo.dev.DeviceUpkeepPrintVo; +import com.glxp.api.vo.dev.DeviceUpkeepVo; + +import java.util.List; + +/** + * @author : zhangsan + * @date : 2024/5/12 15:16 + * @modyified By : + */ + +/** + * 针对表【device_upkeep(保养任务表)】的数据库操作Service + */ +public interface DeviceUpkeepService extends IService { + + List pageList(DeviceUpkeepQuery query); + + void genByPlanId(Long planId, boolean b, AuthAdmin user); + + + + DeviceUpkeepPrintVo checkInfoPrint(Long taskId, String deviceCode); + + void finishUpkeep(Long taskId, String deviceCode); + + /** + * 完成一个保养设备 + * + * @param taskId 任务id + * @param deviceCode 设备编码 + * @return + */ +// void finishDevice(Long taskId, String deviceCode); + +// void finishUpkeep(String deviceCode, String deptCode, Long taskId, AuthAdmin user); +} diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckDetailItemServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckDetailItemServiceImpl.java index 59a5bb267..1065a3142 100644 --- a/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckDetailItemServiceImpl.java +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckDetailItemServiceImpl.java @@ -63,6 +63,7 @@ public class DeviceCheckDetailItemServiceImpl extends ServiceImpl pageList(DeviceCheckItemDictQuery query) { PageHelper.startPage(query.getPage(), query.getLimit()); List list = super.list(Wrappers.lambdaQuery(DeviceCheckItemDictEntity.class) + .eq(query.getType().toString() != null, DeviceCheckItemDictEntity::getType, query.getType()) .like(StrUtil.isNotBlank(query.getCode()), DeviceCheckItemDictEntity::getCode, query.getCode()) .like(StrUtil.isNotBlank(query.getName()), DeviceCheckItemDictEntity::getName, query.getName()) .orderByDesc(DeviceCheckItemDictEntity::getCreateTime) diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckServiceImpl.java index 5fbbe194e..d45b3615d 100644 --- a/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckServiceImpl.java +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceCheckServiceImpl.java @@ -97,7 +97,7 @@ public class DeviceCheckServiceImpl extends ServiceImpl(); } - List productItems = finalItemMap.get(d.getProductId() + "_"); + List productItems = finalItemMap.get(d.getProductId() + "_" ); if (CollectionUtil.isNotEmpty(productItems)) { items.addAll(productItems); } @@ -108,7 +108,9 @@ public class DeviceCheckServiceImpl extends ServiceImpl { DeviceCheckDetailItemEntity deviceCheckDetailItem = DeviceCheckDetailItemEntity.builder() diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceInfoServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceInfoServiceImpl.java index cd7946882..fb3119847 100644 --- a/src/main/java/com/glxp/api/service/dev/impl/DeviceInfoServiceImpl.java +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.dev.DeviceInfoEntity; +import com.glxp.api.entity.dev.DeviceUpkeepEntity; import com.glxp.api.enums.dev.DeviceStatusEnum; import com.glxp.api.exception.JsonException; import com.glxp.api.req.dev.DeviceInfoDetailByDeptCodeQuery; @@ -229,6 +230,8 @@ public class DeviceInfoServiceImpl extends ServiceImpl + implements DeviceUpkeepDetailItemService { + + @Resource + DeviceUpkeepService deviceUpkeepService; + @Resource + DeviceUpkeepDetailService deviceUpkeepDetailService; + + + @Override + public List listByTaskId(Long taskId, String deviceCode) { + List list = super.list(Wrappers.lambdaQuery(DeviceUpkeepDetailItemEntity.class) + .eq(DeviceUpkeepDetailItemEntity::getTaskId, taskId) + .eq(deviceCode != null, DeviceUpkeepDetailItemEntity::getDeviceCode, deviceCode) + .orderByAsc(DeviceUpkeepDetailItemEntity::getDeviceCode, DeviceUpkeepDetailItemEntity::getItemCode) + ); + return list; + } + + @Override + public List pageList(DeviceUpkeepDetailItemQuery query) { + List list = super.list(Wrappers.lambdaQuery(DeviceUpkeepDetailItemEntity.class) + .eq(DeviceUpkeepDetailItemEntity::getTaskId, query.getTaskId()) + .eq(DeviceUpkeepDetailItemEntity::getDeviceCode, query.getDeviceCode()) + .orderByAsc(DeviceUpkeepDetailItemEntity::getFinishFlag, DeviceUpkeepDetailItemEntity::getNormalFlag, DeviceUpkeepDetailItemEntity::getDeviceCode, DeviceUpkeepDetailItemEntity::getItemCode) + ); + + return list; + } + + @Override + public void finish(DeviceUpkeepDetailItemFinishParam param, AuthAdmin user) { + DeviceUpkeepEntity upkeepEntity = deviceUpkeepService.getById(param.getTaskId()); + if (upkeepEntity == null) { + return; + } +// DeviceUpkeepDetailEntity detailEntity = deviceUpkeepDetailService.getOne(param.getTaskId(), param.getDeviceCode()); +//// DeviceCheckDetailEntity detailEntity = deviceCheckDetailService.getOne(param.getTaskId(), param.getDeviceCode()); + + DeviceUpkeepDetailEntity detailEntity = deviceUpkeepDetailService.getOne(param.getTaskId(), param.getDeviceCode()); + if (detailEntity == null) { + return; + } + boolean updated = super.update(Wrappers.lambdaUpdate(DeviceUpkeepDetailItemEntity.class) + .set(DeviceUpkeepDetailItemEntity::getFinishFlag, true) + .set(DeviceUpkeepDetailItemEntity::getFinishTime, LocalDateTime.now()) + .set(DeviceUpkeepDetailItemEntity::getSuggestion, param.getSuggestion()) + .set(DeviceUpkeepDetailItemEntity::getNormalFlag, param.getNormalFlag()) + .set(DeviceUpkeepDetailItemEntity::getUpkeepUserId, user.getId()) + .set(DeviceUpkeepDetailItemEntity::getUpkeepUserName, user.getEmployeeName()) + .set(DeviceUpkeepDetailItemEntity::getUpkeepDeptCode, user.getLocDeptCode()) + .set(DeviceUpkeepDetailItemEntity::getUpkeepDeptName, user.getDeptName()) + .set(DeviceUpkeepDetailItemEntity::getUpdateTime,LocalDateTime.now()) + .eq(DeviceUpkeepDetailItemEntity::getTaskId, param.getTaskId()) + .eq(DeviceUpkeepDetailItemEntity::getDeviceCode, param.getDeviceCode()) + .eq(DeviceUpkeepDetailItemEntity::getItemCode, param.getItemCode()) + .eq(DeviceUpkeepDetailItemEntity::getFinishFlag, false) + ); + if (updated) { + deviceUpkeepDetailService.finishItem(param.getTaskId(), param.getDeviceCode(), detailEntity.getDeptCode(), param.getNormalFlag(), user); + } else { + throw new JsonException("操作失败,该项目可能已经被其他人完成,请刷新重试"); + } + } +} + + + + diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepDetailServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepDetailServiceImpl.java new file mode 100644 index 000000000..86784ff5c --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepDetailServiceImpl.java @@ -0,0 +1,100 @@ +package com.glxp.api.service.dev.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.dev.DeviceUpkeepDetailMapper; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.DeviceCheckDetailEntity; +import com.glxp.api.entity.dev.DeviceUpkeepDetailEntity; +import com.glxp.api.req.dev.DeviceUpkeepDetailQuery; +import com.glxp.api.service.dev.*; +import groovy.util.logging.Slf4j; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 针对表【device_upkeep_detail(保养任务明细)】的数据库操作Service实现 + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class DeviceUpkeepDetailServiceImpl extends ServiceImpl + implements DeviceUpkeepDetailService { + + final DeviceUpkeepService deviceUpkeepService; + final DeviceInfoService deviceInfoService; + + @Override + public List pageList(DeviceUpkeepDetailQuery query) { + if (query.getPage() != null) { + PageHelper.startPage(query.getPage(), query.getLimit()); + } + List list = super.list(Wrappers.lambdaQuery(DeviceUpkeepDetailEntity.class) + .eq(DeviceUpkeepDetailEntity::getTaskId, query.getTaskId()) + .eq(StrUtil.isNotBlank(query.getDeviceCode()), DeviceUpkeepDetailEntity::getDeviceCode, query.getDeviceCode()) + .orderBy(true, true, DeviceUpkeepDetailEntity::getFinishFlag) + .orderBy(true, false, DeviceUpkeepDetailEntity::getExceptionCount) + .orderBy(true, true, DeviceUpkeepDetailEntity::getDeptCode) + .orderBy(true, true, DeviceUpkeepDetailEntity::getFinishTime) + .orderBy(true, true, DeviceUpkeepDetailEntity::getDeptCode) + ); + return list; + } + + @Override + public List listByTaskId(Long taskId, String deviceCode) { + List list = super.list(Wrappers.lambdaQuery(DeviceUpkeepDetailEntity.class) + .eq(DeviceUpkeepDetailEntity::getTaskId, taskId) + .eq(deviceCode != null, DeviceUpkeepDetailEntity::getDeviceCode, deviceCode) + .orderByAsc(DeviceUpkeepDetailEntity::getDeptCode, DeviceUpkeepDetailEntity::getDeviceCode) + ); + return list; + } + + @Override + public DeviceUpkeepDetailEntity getOne(Long taskId, String deviceCode) { + return super.getOne(Wrappers.lambdaQuery(DeviceUpkeepDetailEntity.class) + .eq(DeviceUpkeepDetailEntity::getTaskId, taskId) + .eq(DeviceUpkeepDetailEntity::getDeviceCode, deviceCode) + ); + } + + @Override + public void finishItem(Long taskId, String deviceCode, String deptCode, Boolean normalFlag, AuthAdmin user) { + boolean updated = super.update(Wrappers.lambdaUpdate(DeviceUpkeepDetailEntity.class) + .setSql("finishCount = finishCount + 1") + .setSql(!normalFlag, "exceptionCount = exceptionCount + 1") + .eq(DeviceUpkeepDetailEntity::getTaskId, taskId) + .eq(DeviceUpkeepDetailEntity::getDeviceCode, deviceCode) + .last("and finishCount+1<=itemCount") + ); + if (updated) { + updated = super.update(Wrappers.lambdaUpdate(DeviceUpkeepDetailEntity.class) + .set(DeviceUpkeepDetailEntity::getFinishFlag, true) + .set(DeviceUpkeepDetailEntity::getFinishTime, LocalDateTime.now()) + .set(DeviceUpkeepDetailEntity::getUpdateTime, LocalDateTime.now()) + .eq(DeviceUpkeepDetailEntity::getTaskId, taskId) + .eq(DeviceUpkeepDetailEntity::getDeviceCode, deviceCode) + .last("and finishCount = itemCount") + ); + if (updated) { + // 所有项目全部完成。。。修改任务单完成设备 and 关闭设备的巡检锁 + deviceUpkeepService.finishUpkeep(taskId, deviceCode); + deviceInfoService.finishCheck(deviceCode, deptCode, taskId, user); + + } + + } + } + + +} + + + + diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepServiceImpl.java new file mode 100644 index 000000000..b964d88ef --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceUpkeepServiceImpl.java @@ -0,0 +1,215 @@ +package com.glxp.api.service.dev.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.dev.DeviceUpkeepMapper; +import com.glxp.api.entity.auth.AuthAdmin; +import com.glxp.api.entity.dev.*; +import com.glxp.api.enums.dev.DeviceStatusEnum; +import com.glxp.api.exception.JsonException; +import com.glxp.api.req.dev.DeviceUpkeepQuery; +import com.glxp.api.service.dev.*; +import com.glxp.api.util.SnowflakeUtil; +import com.glxp.api.vo.dev.*; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.stream.Collectors; + +/** + * @author : zhangsan + * @date : 2024/5/12 15:19 + * @modyified By : + */ + + +/** + * 针对表【device_upkeep(保养任务表)】的数据库操作Service + */ +@Service +@RequiredArgsConstructor +public class DeviceUpkeepServiceImpl extends ServiceImpl + implements DeviceUpkeepService { + + + @Resource + DevicePlanService devicePlanService; + @Resource + DeviceUpkeepDetailService deviceUpkeepDetailService; + @Resource + DevicePlanDetailItemService devicePlanDetailItemService; + @Resource + DeviceInfoService deviceInfoService; + @Resource + DeviceUpkeepDetailItemService deviceUpkeepDetailItemService; + @Resource + DevicePlanDetailService devicePlanDetailService; + + private final ThreadPoolTaskExecutor taskExecutor; + + @Override + public List pageList(DeviceUpkeepQuery query) { + if (query.getPage() != null){ + PageHelper.startPage(query.getPage(),query.getLimit()); + } + List list = super.baseMapper.pageVo(query); + return list; + } + + @Override + public void genByPlanId(Long planId, boolean b, AuthAdmin user) { + DevicePlanEntity plan = devicePlanService.getById(planId); + if (plan == null) { + throw new JsonException("保养计划不存在"); + } + List planDetailList = devicePlanDetailService.listByPlanId(planId); + if (CollectionUtil.isEmpty(planDetailList)) { + throw new JsonException("计划保养产品为空,不创建任务单"); + } + List itemList = devicePlanDetailItemService.listByPlanId(planId); + Map> itemMap = new HashMap<>(); + if (CollectionUtil.isNotEmpty(itemList)) { + itemMap = itemList.stream().collect(Collectors.groupingBy(i -> i.getProductId() + "_" + i.getDeviceCode())); + } + + DeviceUpkeepEntity deviceUpkeepEntity = DeviceUpkeepEntity.builder() + .taskId(SnowflakeUtil.getId()) + .planId(plan.getPlanId()) + .planName(plan.getName()) + .chargeDeptCode(plan.getChargeDeptCode()) + .name(plan.getName()) + .finishCount(0) + .sysFlag(b) + .createTime(LocalDateTime.now()) + .updateTime(LocalDateTime.now()) + .createUserId(b ? null : user.getId()) + .createUserName(b ? null : user.getEmployeeName()) + .build(); + + List upkeepDetailList = new ArrayList<>(); + List upkeepDetailItemList = new ArrayList<>(); + Map> finalItemMap = itemMap; + planDetailList.forEach(d -> { + List items = finalItemMap.get(d.getProductId() + "_" + d.getDeviceCode()); + if (CollectionUtil.isEmpty(items)) { + items = new ArrayList<>(); + } + List productItems = finalItemMap.get(d.getProductId() + "_"); + if (CollectionUtil.isNotEmpty(productItems)) { + items.addAll(productItems); + } + if (CollectionUtil.isNotEmpty(items)) { + DeviceUpkeepDetailEntity detailEntity = DeviceUpkeepDetailEntity.builder() + .taskId(deviceUpkeepEntity.getTaskId()) + .updateTime(LocalDateTime.now()) + .finishFlag(false) + .build(); + BeanUtil.copyProperties(d, detailEntity); + boolean opened = deviceInfoService.openCheckLock(d.getDeviceCode(), d.getDeptCode()); + if (opened) { + items.forEach(item -> { + DeviceUpkeepDetailItemEntity deviceCheckDetailItem = DeviceUpkeepDetailItemEntity.builder() + .taskId(deviceUpkeepEntity.getTaskId()) + .deviceCode(d.getDeviceCode()) + .itemCode(item.getItemCode()) + .itemName(item.getName()) + .itemContent(item.getContent()) + .finishFlag(false) + .updateTime(LocalDateTime.now()) + .build(); +// deviceCheckDetailItem.setUpdateTime(LocalDateTime.now()); + upkeepDetailItemList.add(deviceCheckDetailItem); + }); + detailEntity.setItemCount(items.size()); + upkeepDetailList.add(detailEntity); + } + } + }); + + if (CollectionUtil.isNotEmpty(upkeepDetailList)) { + devicePlanService.addExecCount(planId); + deviceUpkeepEntity.setDeviceCount(upkeepDetailList.size()); + super.save(deviceUpkeepEntity); + deviceUpkeepDetailService.saveBatch(upkeepDetailList); + if (CollectionUtil.isNotEmpty(upkeepDetailItemList)) { + deviceUpkeepDetailItemService.saveBatch(upkeepDetailItemList); + } + } else { + throw new JsonException(String.format("没有配置保养项目 或者 没有找到处于[%s]状态的设备,无法生成保养单", DeviceStatusEnum.NORMAL.getDesc())); + } + } + + @Override + public DeviceUpkeepPrintVo checkInfoPrint(Long taskId, String deviceCode) { + CompletableFuture infoFuture = CompletableFuture.supplyAsync(() -> { + return super.baseMapper.getVoById(taskId); + }, taskExecutor); + CompletableFuture> detailFuture = CompletableFuture.supplyAsync(() -> { + return deviceUpkeepDetailService.listByTaskId(taskId, deviceCode); + }, taskExecutor); + CompletableFuture> detailItemFuture = CompletableFuture.supplyAsync(() -> { + return deviceUpkeepDetailItemService.listByTaskId(taskId, deviceCode); + }, taskExecutor); + + try { + CompletableFuture.allOf(detailItemFuture).get(); + DeviceUpkeepVo upkeepVo = infoFuture.get(); + List details = detailFuture.get(); + List items = detailItemFuture.get(); + if (upkeepVo == null || details == null || items == null) { + throw new JsonException("任务单不存在"); + } + List detailVos = BeanUtil.copyToList(details, DeviceUpkeepPrintVo.DetailVo.class); + Map> itemsMap = items.stream().collect(Collectors.groupingBy(DeviceUpkeepDetailItemEntity::getDeviceCode)); + detailVos.forEach(i -> { + i.setDetailItems(itemsMap.get(i.getDeviceCode())); + }); + DeviceUpkeepPrintVo vo = DeviceUpkeepPrintVo.builder() + .printTime(LocalDateTime.now()) + .info(upkeepVo) + .details(detailVos) + .build(); + return vo; + } catch (InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } + } + + @Override + @Transactional + public void finishUpkeep(Long taskId, String deviceCode) { + boolean updated = super.update(Wrappers.lambdaUpdate(DeviceUpkeepEntity.class) + .setSql("finishCount = finishCount + 1") + .setSql(String.format("exceptionCount = exceptionCount + (select exceptionCount>0 from device_check_detail where taskId = %s and deviceCode = '%s')", taskId, deviceCode)) + .eq(DeviceUpkeepEntity::getTaskId, taskId) + .last("and finishCount+1 <= deviceCount") + ); + if (updated) { + updated = super.update(Wrappers.lambdaUpdate(DeviceUpkeepEntity.class) + .set(DeviceUpkeepEntity::getFinishFlag, true) + .set(DeviceUpkeepEntity::getFinishTime, LocalDateTime.now()) + .set(DeviceUpkeepEntity::getUpdateTime,LocalDateTime.now()) + .eq(DeviceUpkeepEntity::getTaskId, taskId) + .eq(DeviceUpkeepEntity::getFinishFlag, false) + .last("and finishCount = deviceCount") + ); + } + } + + + + +} diff --git a/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepPrintVo.java b/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepPrintVo.java new file mode 100644 index 000000000..c39948754 --- /dev/null +++ b/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepPrintVo.java @@ -0,0 +1,34 @@ +package com.glxp.api.vo.dev; + +import com.glxp.api.entity.dev.DeviceCheckDetailEntity; +import com.glxp.api.entity.dev.DeviceCheckDetailItemEntity; +import com.glxp.api.entity.dev.DeviceUpkeepDetailItemEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DeviceUpkeepPrintVo { + + LocalDateTime printTime; + + DeviceUpkeepVo info; + + List details; + + + @Data + @AllArgsConstructor + @NoArgsConstructor + public class DetailVo extends DeviceCheckDetailEntity { + public List detailItems; + } + +} diff --git a/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepVo.java b/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepVo.java new file mode 100644 index 000000000..a6c3d0ca0 --- /dev/null +++ b/src/main/java/com/glxp/api/vo/dev/DeviceUpkeepVo.java @@ -0,0 +1,12 @@ +package com.glxp.api.vo.dev; + +import com.glxp.api.entity.dev.DeviceCheckEntity; +import com.glxp.api.entity.dev.DeviceUpkeepEntity; +import lombok.Data; + +@Data +public class DeviceUpkeepVo extends DeviceUpkeepEntity { + + String chargeDeptName; + +} diff --git a/src/main/resources/mybatis/mapper/dev/DevicePlanMapper.xml b/src/main/resources/mybatis/mapper/dev/DevicePlanMapper.xml index 7ca05d0f8..d443de34d 100644 --- a/src/main/resources/mybatis/mapper/dev/DevicePlanMapper.xml +++ b/src/main/resources/mybatis/mapper/dev/DevicePlanMapper.xml @@ -33,6 +33,9 @@ and p.chargeDeptCode = #{chargeDeptCode} + + and p.type = #{type} + order by p.createTime desc diff --git a/src/main/resources/mybatis/mapper/dev/DeviceUpkeepMapper.xml b/src/main/resources/mybatis/mapper/dev/DeviceUpkeepMapper.xml new file mode 100644 index 000000000..f915694e1 --- /dev/null +++ b/src/main/resources/mybatis/mapper/dev/DeviceUpkeepMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + taskId,planId,planName, + upkeepUserId,upkeepUserName,upkeepUserPhone, + name,remark,sysFlag, + createTime,createUserId,createUserName + + + +