From 8af535b12c82e423b60341b8661ee690f412b5e3 Mon Sep 17 00:00:00 2001 From: FCL Date: Wed, 31 Dec 2025 10:13:25 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E8=AE=BE=E5=A4=87=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=8E=A5=E5=8F=A3-=E7=BB=B4=E6=8A=A4=E3=80=81?= =?UTF-8?q?=E5=B7=A1=E6=A3=80=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/DeviceMaintainController.java | 8 +- .../admin/DeviceUseRecordController.java | 51 +++++-- .../vo/DeviceUseRecordPageReqVO.java | 24 +++- .../controller/vo/DeviceUseRecordVO.java | 79 +++++++++++ .../dataobject/DeviceInfoWithBizConfigVO.java | 48 +++++++ .../dal/dataobject/DeviceMaintainItemDO.java | 4 +- .../dal/mapper/DeviceMaintainMapper.java | 2 +- .../dal/mapper/DeviceUseRecordMapper.java | 12 +- .../DeviceConfigBusinessRuleServiceImpl.java | 18 ++- .../service/DeviceInfomationService.java | 26 ++++ .../service/DeviceInfomationServiceImpl.java | 121 ++++++++++++++++ .../service/DeviceMaintainItemService.java | 1 + .../DeviceMaintainItemServiceImpl.java | 5 + .../device/service/DeviceMaintainService.java | 2 + .../service/DeviceMaintainServiceImpl.java | 20 ++- .../service/DeviceUseRecordService.java | 10 +- .../service/DeviceUseRecordServiceImpl.java | 36 ++++- .../dal/mapper/DeviceMaintainMapper.xml | 21 ++- .../dal/mapper/DeviceUseRecordMapper.xml | 129 +++++++++++++++++- 19 files changed, 569 insertions(+), 48 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordVO.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceInfoWithBizConfigVO.java diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java index 0bc1972..98c1651 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceMaintainController.java @@ -59,6 +59,12 @@ public class DeviceMaintainController extends AbstractFileUploadController imple @Resource private DeviceMaintainService deviceMaintainService; @Resource private DeviceInfomationService deviceInfomationService; + @PostMapping("/saveMaintainVo") + @Operation(summary = "创建或获取维护数据") + public CommonResult saveMaintainVo(@RequestBody DeviceMaintainVO vo) { + return deviceMaintainService.saveMaintainVo(vo); + } + @PostMapping("/createOrGet") @Operation(summary = "创建或获取维护数据") public CommonResult createOrGet(@RequestBody JSONObject jsonObject) { @@ -88,7 +94,7 @@ public class DeviceMaintainController extends AbstractFileUploadController imple } @GetMapping("/queryPageListWithCount") - @Operation(summary = "维护-分页列表查询") + @Operation(summary = "维护-分页列表查询(以设备为主数据)") public CommonResult> queryPageListWithCount(@Valid DeviceMaintainPageReqVO pageReqVO) { PageResult pageResult = deviceMaintainService.queryPageListWithCount(pageReqVO); return success(pageResult); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceUseRecordController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceUseRecordController.java index 04aa9f4..b182cf6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceUseRecordController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceUseRecordController.java @@ -1,8 +1,12 @@ package com.zt.plat.module.qms.resource.device.controller.admin; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordSaveReqVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.qms.resource.device.controller.vo.*; +import com.zt.plat.module.qms.resource.device.dal.mapper.DeviceUseRecordMapper; +import com.zt.plat.module.qms.resource.device.service.DeviceInfomationService; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -31,6 +35,7 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_USE_RECORD_NOT_EXISTS; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceUseRecordDO; import com.zt.plat.module.qms.resource.device.service.DeviceUseRecordService; @@ -49,14 +54,43 @@ public class DeviceUseRecordController extends AbstractFileUploadController impl } } - @Resource - private DeviceUseRecordService deviceUseRecordService; + @Resource private DeviceUseRecordService deviceUseRecordService; + @Resource private DeviceInfomationService deviceInfomationService; + @Resource private DeviceUseRecordMapper deviceUseRecordMapper; + + @GetMapping("/queryPageListWithCount") + @Operation(summary = "使用记录分页列表查询(以设备为主数据)") + public CommonResult> queryPageListWithCount(@Valid DeviceUseRecordPageReqVO pageReqVO) { + PageResult pageResult = deviceUseRecordService.queryPageListWithCount(pageReqVO); + return success(pageResult); + } + + @GetMapping("/queryLastUsingData") + @Operation(summary = "查询设备最近一次使用中的记录") + @Parameter(name = "deviceId", description = "设备ID", required = true, example = "1024") + public CommonResult queryLastUsingData(@RequestParam("deviceId") Long deviceId) { + if(deviceId == null) + return CommonResult.error(DEVICE_USE_RECORD_NOT_EXISTS.getCode(), "设备ID不能为空"); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DeviceUseRecordDO::getDeviceId, deviceId); + query.isNull(DeviceUseRecordDO::getUseTimeEnd); + query.orderByDesc(DeviceUseRecordDO::getUseTimeStart); + query.last("LIMIT 1"); + DeviceUseRecordDO recordDO = deviceUseRecordMapper.selectOne( query); + return success(BeanUtils.toBean(recordDO, DeviceUseRecordRespVO.class)); + } @PostMapping("/create") @Operation(summary = "创建设备-使用记录") - @PreAuthorize("@ss.hasPermission('qms:device-use-record:create')") - public CommonResult createDeviceUseRecord(@Valid @RequestBody DeviceUseRecordSaveReqVO createReqVO) { - return success(deviceUseRecordService.createDeviceUseRecord(createReqVO)); + public CommonResult createDeviceUseRecord(@Valid @RequestBody DeviceUseRecordSaveReqVO reqVO) { + Long deviceId = reqVO.getDeviceId(); + if(deviceId == null) + return CommonResult.error(DEVICE_USE_RECORD_NOT_EXISTS.getCode(), "设备ID不能为空"); + //检查设备状态 + CommonResult checkResult = deviceInfomationService.checkDeviceUsable(deviceId); + if(!checkResult.isSuccess()) + return CommonResult.error(checkResult); + return deviceUseRecordService.createDeviceUseRecord(reqVO); } @PutMapping("/update") @@ -96,7 +130,6 @@ public class DeviceUseRecordController extends AbstractFileUploadController impl @GetMapping("/page") @Operation(summary = "获得设备-使用记录分页") - @PreAuthorize("@ss.hasPermission('qms:device-use-record:query')") public CommonResult> getDeviceUseRecordPage(@Valid DeviceUseRecordPageReqVO pageReqVO) { PageResult pageResult = deviceUseRecordService.getDeviceUseRecordPage(pageReqVO); return success(BeanUtils.toBean(pageResult, DeviceUseRecordRespVO.class)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordPageReqVO.java index 27a5319..03e7778 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordPageReqVO.java @@ -23,10 +23,10 @@ public class DeviceUseRecordPageReqVO extends PageParam { private Long userId; @Schema(description = "开始使用时间") - private LocalDateTime useTimeStart; + private LocalDateTime[] useTimeStart; @Schema(description = "结束使用时间") - private LocalDateTime useTimeEnd; + private LocalDateTime[] useTimeEnd; @Schema(description = "使用记录") private String useRemark; @@ -59,4 +59,24 @@ public class DeviceUseRecordPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + //=====================================扩展字段=============================================== + + @Schema(description = "产品id") + private Long productId; + + @Schema(description = "设备名称") + private String deviceName; + + @Schema(description = "管理编号") + private String deviceCode; + + @Schema(description = "使用部门") + private String deptName; + + @Schema(description = "产品id查询") + private List productIdList; + + @Schema(description = "设备ID列表") + private List deviceIdList; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordVO.java new file mode 100644 index 0000000..58f00f2 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceUseRecordVO.java @@ -0,0 +1,79 @@ +package com.zt.plat.module.qms.resource.device.controller.vo; + +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceMaintainItemDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 设备使用记录VO") +@Data +public class DeviceUseRecordVO extends DeviceUseRecordRespVO { + + + //============大类字段============ + @Schema(description = "产品id") + private Long productId; + + @Schema(description = "规格") + private String specification; + + @Schema(description = "型号") + private String modelNo; + + @Schema(description = "制造商") + private String manufacturer; + + //============设备字段============ + @Schema(description = "设备名称") + private String deviceName; + + @Schema(description = "别名") + private String alias; + + @Schema(description = "管理编号") + private String deviceCode; + + @Schema(description = "资产编号") + private String assetCode; + + @Schema(description = "出厂编号") + private String factoryCode; + + @Schema(description = "所属部门名称") + private String deptName; + + @Schema(description = "维修状态: 1-维修;0-正常") + private Integer repairFlag; + + @Schema(description = "降级状态") + private Integer demoteFlag; + + @Schema(description = "报废状态") + private Integer scrapFlag; + + @Schema(description = "停用状态") + private Integer disableFlag; + + @Schema(description = "外借状态") + private Integer lendFlag; + + @Schema(description = "使用中状态") + private Integer inUseFlag; + + @Schema(description = "验收状态") + private String acceptFlag; + + + //============其他字段============ + @Schema(description = "未提交数据量") + private Integer runningCount; + + @Schema(description = "已提交数据量") + private Integer finishedCount; + + @Schema(description = "截止时间不为空") + private String useTimeEndFlag; + + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceInfoWithBizConfigVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceInfoWithBizConfigVO.java new file mode 100644 index 0000000..9c41941 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceInfoWithBizConfigVO.java @@ -0,0 +1,48 @@ +package com.zt.plat.module.qms.resource.device.dal.dataobject; + +import com.zt.plat.module.qms.core.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; + +public class DeviceInfoWithBizConfigVO extends DeviceInfomationDO{ + + @Schema(description = "规则id") + private String ruleId; + + @Schema(description = "业务领域:点检|检定校准|期间核查|等") + @Dict(dicCode = "device_business_domain") + private String businessDomain; + + @Schema(description = "是否需要") + private Integer needFlag; + + @Schema(description = "子业务类型") + private String subDomainType; + + @Schema(description = "频次类型") + private String frequencyType; + + @Schema(description = "频次") + private String frequency; + + @Schema(description = "频次说明") + private String frequencyRemark; + + @Schema(description = "报表模板") + private String reportTemplateKey; + + @Schema(description = "表单组件") + private String formComponent; + + @Schema(description = "处理方法") + private String processMethod; + + @Schema(description = "处理人") + private String processUser; + + @Schema(description = "标准/规范") + private String standard; + + @Schema(description = "检定/校准类型") + private String calibrationCheckType; + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceMaintainItemDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceMaintainItemDO.java index 5d23f4a..4314fab 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceMaintainItemDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceMaintainItemDO.java @@ -94,12 +94,12 @@ public class DeviceMaintainItemDO extends BusinessBaseDO { /** * 所属周期开始日期 */ - @TableField("FREQ_ITM_STRT") + @TableField("FREQ_TM_STRT") private LocalDateTime frequencyTimeStart; /** * 所属周期截止日期 */ - @TableField("FREQ_ITM_END") + @TableField("FREQ_TM_STRT") private LocalDateTime frequencyTimeEnd; /** * 检查标准 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.java index 5604e45..56fcf80 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.java @@ -41,6 +41,6 @@ public interface DeviceMaintainMapper extends BaseMapperX { } IPage queryPageListWithCount(Page page, @Param("param") DeviceMaintainPageReqVO param); - DeviceMaintainVO queryMaintainVoById(@Param("id") Long id); + DeviceMaintainVO queryVoById(@Param("id") Long id); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceUseRecordMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceUseRecordMapper.java index e688bdc..539b0fe 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceUseRecordMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceUseRecordMapper.java @@ -1,11 +1,15 @@ package com.zt.plat.module.qms.resource.device.dal.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceUseRecordDO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordPageReqVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 设备-使用记录 Mapper @@ -20,8 +24,8 @@ public interface DeviceUseRecordMapper extends BaseMapperX { .eqIfPresent(DeviceUseRecordDO::getDeviceId, reqVO.getDeviceId()) .likeIfPresent(DeviceUseRecordDO::getUserName, reqVO.getUserName()) .eqIfPresent(DeviceUseRecordDO::getUserId, reqVO.getUserId()) - .eqIfPresent(DeviceUseRecordDO::getUseTimeStart, reqVO.getUseTimeStart()) - .eqIfPresent(DeviceUseRecordDO::getUseTimeEnd, reqVO.getUseTimeEnd()) + .betweenIfPresent(DeviceUseRecordDO::getUseTimeStart, reqVO.getUseTimeStart()) + .betweenIfPresent(DeviceUseRecordDO::getUseTimeEnd, reqVO.getUseTimeEnd()) .eqIfPresent(DeviceUseRecordDO::getUseRemark, reqVO.getUseRemark()) .eqIfPresent(DeviceUseRecordDO::getStateBefore, reqVO.getStateBefore()) .eqIfPresent(DeviceUseRecordDO::getStateRun, reqVO.getStateRun()) @@ -35,4 +39,8 @@ public interface DeviceUseRecordMapper extends BaseMapperX { .orderByDesc(DeviceUseRecordDO::getId)); } + IPage queryPageListWithCount(Page page, @Param("param") DeviceUseRecordPageReqVO param); + DeviceUseRecordVO queryVoById(@Param("id") Long id); + + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigBusinessRuleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigBusinessRuleServiceImpl.java index 36037d7..663f14c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigBusinessRuleServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigBusinessRuleServiceImpl.java @@ -10,6 +10,7 @@ import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceProductDO; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -55,14 +56,17 @@ public class DeviceConfigBusinessRuleServiceImpl implements DeviceConfigBusiness DeviceInfomationDO deviceDO = deviceInfomationService.getDeviceInfomation(deviceId); DeviceProductDO productDO = deviceProductService.getDeviceProduct(deviceDO.getProductId()); String path = productDO.getIdPath(); - String[] split = path.split("/"); List productIdList = new ArrayList<>(); - for (String s : split) { - String id = s.replaceAll("/", ""); - if(id.equals("0")) - continue; - productIdList.add(s); - } + if(!ObjectUtils.isEmpty(path)){ + String[] split = path.split("/"); + for (String s : split) { + String id = s.replaceAll("/", ""); + if(id.equals("0")) + continue; + productIdList.add(s); + } + }else + productIdList.add(productDO.getId().toString()); List ruleList = getByProductIdListAndBusinessDomain(productIdList, type); if(ruleList.isEmpty()) return CommonResult.error(DEVICE_CONFIG_BUSINESS_RULE_NOT_EXISTS); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java index 1175b99..6a6eb70 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationService.java @@ -1,14 +1,17 @@ package com.zt.plat.module.qms.resource.device.service; +import com.alibaba.fastjson.JSONObject; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationSaveReqVO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfoWithBizConfigVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; import jakarta.validation.Valid; import java.util.List; +import java.util.Map; /** * 设备-设备信息 Service 接口 @@ -27,6 +30,29 @@ public interface DeviceInfomationService { List getIdListByProductIdList(List productIds); + + //查询需要“某个业务类型”的设备列表 + List getListNeedByRule(JSONObject params); + + + // 更新设备的生命周期状态 + CommonResult updateLifeStatus(DeviceInfomationDO info, String bizType, Integer flag); + + //更新“使用中”状态 + void updateDeviceInUseFlag(Long deviceId, Integer inUseFlag); +// CommonResult updateDeviceRepairFlag(Long deviceId, Integer repairFlag); +// CommonResult updateDeviceDemoteFlag(Long deviceId, Integer demoteFlag); +// CommonResult updateDeviceScrapFlag(Long deviceId, Integer scrapFlag); +// CommonResult updateDeviceDisableFlag(Long deviceId, Integer disableFlag); +// CommonResult updateDeviceAcceptFlag(Long deviceId, String acceptFlag); +// CommonResult updateDeviceLendFlag(Long deviceId, Integer lendFlag); + + + + + + + /** * 创建设备-设备信息 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java index a6bc827..4c744ea 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceInfomationServiceImpl.java @@ -1,7 +1,12 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -10,6 +15,7 @@ import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationPage import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceInfomationSaveReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceProductRespVO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfoWithBizConfigVO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceInfomationDO; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceProductDO; import com.zt.plat.module.qms.resource.device.dal.mapper.DeviceInfomationMapper; @@ -19,7 +25,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; @@ -80,6 +88,119 @@ public class DeviceInfomationServiceImpl implements DeviceInfomationService { return CommonResult.error( DEVICE_INFOMATION_NOT_EXISTS.getCode(), "设备在维修中"); return CommonResult.success( true); } + /*todo 查询需要“某个业务类型”的设备列表*/ + @Override + public List getListNeedByRule(JSONObject params) { + + return null; + } + + /* + * 更新设备生命周期状态 + * 传入设备实体、业务类型(停用、外借、维修、降级等)、状态(1-是,其他-否) + * */ + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult updateLifeStatus(DeviceInfomationDO info, String bizType, Integer flag) { + String stateStack = info.getStateStack(); + JSONArray arr = new JSONArray(); + if(!ObjectUtils.isEmpty(stateStack)) + arr = JSON.parseArray(stateStack); + String state = "-1"; + Map stateMap = new HashMap<>(); + SFunction tableField = null; + stateMap.put("repair", "维修"); + stateMap.put("demote", "降级"); + stateMap.put("scrap", "报废"); + stateMap.put("disable", "停用"); + stateMap.put("lend", "外借"); + if(bizType.equals("repair")){ + state = info.getRepairFlag(); + tableField = DeviceInfomationDO::getRepairFlag; + } + if(bizType.equals("demote")){ + state = info.getDemoteFlag(); + tableField = DeviceInfomationDO::getDemoteFlag; + } + if(bizType.equals("scrap")){ + state = info.getScrapFlag(); + tableField = DeviceInfomationDO::getScrapFlag; + } + if(bizType.equals("disable")){ + state = info.getDisableFlag(); + tableField = DeviceInfomationDO::getDisableFlag; + } + if(bizType.equals("lend")){ + state = info.getLendFlag(); + tableField = DeviceInfomationDO::getLendFlag; + } + if("-1".equals( state)) + return CommonResult.error(DEVICE_INFOMATION_NOT_EXISTS.getCode(), "请传入正确的业务类型!"); + //未传入状态,则切换状态 + if(flag == null){ + state = "1".equals(state) ? "0" : "1"; + }else{ + state = flag.equals(1) ? "1" : "0"; + } + + JSONObject json = null; + int index = -1; + boolean itemFindFlag = false; + for(int i = 0; i < arr.size(); i++){ + index = i; + JSONObject item = arr.getJSONObject(i); + if(item.getString("bizType").equals(bizType)){ + json = item; + itemFindFlag = true; + break; + } + } + //如果栈里不存在记录 + if(json == null){ + //状态为正常,不做处理 + if(!"0".equals(state)){ + //插入记录 + json = new JSONObject(); + json.put("bizType", bizType); + json.put("state", state); + arr.add(0, json); + } + }else{ + //存在记录,移至最前端 + if(itemFindFlag) + arr.remove(index); + if("1".equals(state)) + arr.add(0, json); + } + info.setStateStack(arr.toJSONString()); + if(arr.isEmpty()){ + info.setStateShow("正常"); + }else{ + JSONObject first = arr.getJSONObject(0); + String firstBiz = first.getString("bizType"); + info.setStateShow(stateMap.get(firstBiz)); + } + //更新数据 + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(DeviceInfomationDO::getId, info.getId()); + updateWrapper.set(tableField, state); + updateWrapper.set(DeviceInfomationDO::getStateShow, info.getStateShow()); + updateWrapper.set(DeviceInfomationDO::getStateStack, info.getStateStack()); + deviceInfomationMapper.update(updateWrapper); + return CommonResult.success(info); + } + + /* + * 更新“使用中”状态*/ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDeviceInUseFlag(Long deviceId, Integer inUseFlag) { + String state = (1 == inUseFlag) ? "1" : "0"; + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(DeviceInfomationDO::getId, deviceId); + updateWrapper.set(DeviceInfomationDO::getInUseFlag, state); + deviceInfomationMapper.update(updateWrapper); + } @Override public DeviceInfomationDO getByCode(String code) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemService.java index a64f325..aed5fa4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemService.java @@ -18,6 +18,7 @@ import com.zt.plat.framework.common.pojo.PageResult; */ public interface DeviceMaintainItemService { + void updateBatch(List list); CommonResult createItems(DeviceMaintainDO maintain, Long ruleId); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemServiceImpl.java index 51a5b49..cbea1a8 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainItemServiceImpl.java @@ -39,6 +39,11 @@ public class DeviceMaintainItemServiceImpl implements DeviceMaintainItemService @Resource private DeviceMaintainItemMapper deviceMaintainItemMapper; @Resource private DeviceConfigBusinessItemService deviceConfigBusinessItemService;; + @Override + public void updateBatch(List list) { + deviceMaintainItemMapper.updateBatch(list); + } + @Override @Transactional(rollbackFor = Exception.class) public CommonResult createItems(DeviceMaintainDO maintain, Long ruleId) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainService.java index ecf33b8..3e23485 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainService.java @@ -20,6 +20,8 @@ import com.zt.plat.framework.common.pojo.PageResult; */ public interface DeviceMaintainService { + CommonResult saveMaintainVo(DeviceMaintainVO vo); + CommonResult createOrGet(Long deviceId, String date, String dataType); CommonResult create(Long deviceId, LocalDate lastDate, String dataType); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainServiceImpl.java index ffd72c4..3941dcc 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceMaintainServiceImpl.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.device.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -21,11 +22,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceMaintainDO; @@ -53,13 +52,24 @@ public class DeviceMaintainServiceImpl implements DeviceMaintainService { @Resource private DeviceInfomationService deviceInfomationService; @Autowired private DeviceConfigBusinessRuleService deviceConfigBusinessRuleService; + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult saveMaintainVo(DeviceMaintainVO vo) { + DeviceMaintainDO data = new DeviceMaintainDO(); + BeanUtil.copyProperties(vo, data); + deviceMaintainMapper.updateById(data); + List maintainItemList = vo.getMaintainItemList(); + deviceMaintainItemService.updateBatch(maintainItemList); + return CommonResult.success(true); + } @Override @Transactional(rollbackFor = Exception.class) public CommonResult createOrGet(Long deviceId, String date, String dataType){ LocalDateTime curDate = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); if(!ObjectUtils.isEmpty(date)) - curDate = LocalDateTime.parse( date + " 00:00:00"); + curDate = LocalDateTime.parse( date + " 00:00:00", formatter); String dateStr = curDate.toLocalDate().toString(); //查询上一个点检记录 DeviceMaintainDO lastData = getLastData(deviceId, dataType, dateStr).getData(); @@ -121,7 +131,7 @@ public class DeviceMaintainServiceImpl implements DeviceMaintainService { @Override public CommonResult getMaintainDetail(Long id) { - DeviceMaintainVO vo = deviceMaintainMapper.queryMaintainVoById( id); + DeviceMaintainVO vo = deviceMaintainMapper.queryVoById( id); if(vo == null) throw exception(DEVICE_MAINTAIN_NOT_EXISTS); List itemList = deviceMaintainItemService.getListByParId( id); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordService.java index 00b6402..3bc119d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordService.java @@ -2,9 +2,8 @@ package com.zt.plat.module.qms.resource.device.service; import java.util.*; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordPageReqVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordRespVO; -import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordSaveReqVO; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.qms.resource.device.controller.vo.*; import jakarta.validation.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceUseRecordDO; import com.zt.plat.framework.common.pojo.PageResult; @@ -16,13 +15,16 @@ import com.zt.plat.framework.common.pojo.PageResult; */ public interface DeviceUseRecordService { + + PageResult queryPageListWithCount(DeviceUseRecordPageReqVO reqVO); + /** * 创建设备-使用记录 * * @param createReqVO 创建信息 * @return 编号 */ - DeviceUseRecordRespVO createDeviceUseRecord(@Valid DeviceUseRecordSaveReqVO createReqVO); + CommonResult createDeviceUseRecord(@Valid DeviceUseRecordSaveReqVO createReqVO); /** * 更新设备-使用记录 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordServiceImpl.java index e400acc..d56e646 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceUseRecordServiceImpl.java @@ -1,11 +1,16 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordSaveReqVO; +import com.zt.plat.module.qms.resource.device.controller.vo.DeviceUseRecordVO; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -17,6 +22,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.device.dal.mapper.DeviceUseRecordMapper; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.pojo.CommonResult.success; import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_USE_RECORD_NOT_EXISTS; @@ -29,16 +35,34 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_USE_RECORD_ @Validated public class DeviceUseRecordServiceImpl implements DeviceUseRecordService { - @Resource - private DeviceUseRecordMapper deviceUseRecordMapper; + @Resource private DeviceInfomationService deviceInfomationService; + @Resource private DeviceUseRecordMapper deviceUseRecordMapper; @Override - public DeviceUseRecordRespVO createDeviceUseRecord(DeviceUseRecordSaveReqVO createReqVO) { - // 插入 - DeviceUseRecordDO deviceUseRecord = BeanUtils.toBean(createReqVO, DeviceUseRecordDO.class); + public PageResult queryPageListWithCount(DeviceUseRecordPageReqVO reqVO) { + return null; + } + + @Override + public CommonResult createDeviceUseRecord(DeviceUseRecordSaveReqVO reqVO) { + Long deviceId = reqVO.getDeviceId(); + if(ObjectUtils.isEmpty(reqVO.getUserName())){ + //当前登录人 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + //当前登录用户昵称 + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + reqVO.setUserName(nickName); + reqVO.setUserId(loginUser.getId()); + } + DeviceUseRecordDO deviceUseRecord = BeanUtils.toBean(reqVO, DeviceUseRecordDO.class); deviceUseRecordMapper.insert(deviceUseRecord); + if(reqVO.getUseTimeEnd() == null) + deviceInfomationService.updateDeviceInUseFlag(deviceId, 1); + else + deviceInfomationService.updateDeviceInUseFlag(deviceId, 0); // 返回 - return BeanUtils.toBean(deviceUseRecord, DeviceUseRecordRespVO.class); + DeviceUseRecordRespVO respVO = BeanUtils.toBean(deviceUseRecord, DeviceUseRecordRespVO.class); + return success(respVO); } @Override diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.xml index f9b63a3..c53382e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/device/dal/mapper/DeviceMaintainMapper.xml @@ -4,7 +4,22 @@ - + + + + + + + + + + + + + + + + @@ -44,7 +59,7 @@ p.MDL_NO - select m.*, from T_DEV_MATN m @@ -59,7 +74,7 @@ + select m.*, + + from T_DEV_USE_RCD m + left join T_DEV_INF d on m.DEV_ID = d.id + left join T_DEV_PDT p on d.PDT_ID = p.id + + and m.ID = #{id} + + + + + + \ No newline at end of file