From c7d4399e53ddfd92b0af19ac01a043cc36f79f02 Mon Sep 17 00:00:00 2001 From: FCL Date: Wed, 28 Jan 2026 17:43:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=BE=E5=A4=87=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/DeviceApplyController.java | 19 +++-- .../controller/vo/DeviceApplyRespVO.java | 2 + .../device/dal/dataobject/DeviceApplyDO.java | 6 +- .../device/service/DeviceApplyService.java | 6 +- .../service/DeviceApplyServiceImpl.java | 85 ++++++++++++++++++- .../service/DeviceConfigFlowService.java | 2 + .../service/DeviceConfigFlowServiceImpl.java | 10 +++ 7 files changed, 114 insertions(+), 16 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java index a01d45b..5da1ac5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/admin/DeviceApplyController.java @@ -52,15 +52,18 @@ public class DeviceApplyController extends AbstractFileUploadController implemen } } - @Resource - private DeviceApplyService deviceApplyService; + @Resource private DeviceApplyService deviceApplyService; - //todo 通过设备通用流程配置创建 - @PostMapping("/createTempData") - @Operation(summary = "创建创建临时数据") -// @PreAuthorize("@ss.hasPermission('qms:device-apply:create')") - public CommonResult createTempData(@Valid @RequestBody DeviceApplySaveReqVO createReqVO) { - return success(deviceApplyService.createTempData(createReqVO)); + @RequestMapping("/createTempData") + @Operation(summary = "创建临时数据") + public CommonResult createTempData(@RequestBody DeviceApplySaveReqVO createReqVO) { + return deviceApplyService.createTempData(createReqVO); + } + + @RequestMapping("/saveDeviceApply") + @Operation(summary = "保存申请数据") + public CommonResult saveDeviceApply(@Valid @RequestBody DeviceApplySaveReqVO createReqVO) { + return deviceApplyService.saveDeviceApply(createReqVO); } @PutMapping("/update") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyRespVO.java index 42ad701..6dbec86 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/controller/vo/DeviceApplyRespVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.qms.resource.device.controller.vo; +import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -49,6 +50,7 @@ public class DeviceApplyRespVO { @Schema(description = "业务状态", example = "1") @ExcelProperty("业务状态") + @Dict(dicCode = "flow_status") private String businessStatus; @Schema(description = "借用人") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceApplyDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceApplyDO.java index 6ff034f..2c0f3af 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceApplyDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/dal/dataobject/DeviceApplyDO.java @@ -45,7 +45,7 @@ public class DeviceApplyDO extends BusinessBaseDO { * 申请部门ID */ @TableField("APL_DEPT") - private String applyDepartment; + private Long applyDepartment; /** * 申请人 */ @@ -55,7 +55,7 @@ public class DeviceApplyDO extends BusinessBaseDO { * 申请人ID */ @TableField("APL_USER") - private String applyUser; + private Long applyUser; /** * 业务编码 */ @@ -115,7 +115,7 @@ public class DeviceApplyDO extends BusinessBaseDO { * 表单模板ID */ @TableField("TMPL_ID") - private String templateId; + private Long templateId; /** * 表单组件 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java index b71c358..0ae79f9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyService.java @@ -2,6 +2,7 @@ package com.zt.plat.module.qms.resource.device.service; import java.util.*; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO; @@ -25,7 +26,9 @@ public interface DeviceApplyService { DeviceApplyRespVO createDeviceApply(@Valid DeviceApplySaveReqVO createReqVO); //创建临时数据 - DeviceApplyRespVO createTempData(@Valid DeviceApplySaveReqVO createReqVO); + CommonResult createTempData(@Valid DeviceApplySaveReqVO createReqVO); + + CommonResult saveDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO); /** * 更新设备通用流程,验收、降级、停用、报废、还原、启用 @@ -34,6 +37,7 @@ public interface DeviceApplyService { */ void updateDeviceApply(@Valid DeviceApplySaveReqVO updateReqVO); + /** * 删除设备通用流程,验收、降级、停用、报废、还原、启用 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java index be003b0..0cbe0ec 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceApplyServiceImpl.java @@ -1,14 +1,31 @@ package com.zt.plat.module.qms.resource.device.service; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.Feature; +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.common.data.dal.dataobject.DataCollectionDO; +import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; +import com.zt.plat.module.qms.common.data.service.DataCollectionService; +import com.zt.plat.module.qms.common.data.service.DataTemplateService; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplyRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceApplySaveReqVO; +import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceConfigFlowDO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; +import java.lang.reflect.InvocationTargetException; import java.util.*; import com.zt.plat.module.qms.resource.device.dal.dataobject.DeviceApplyDO; @@ -28,10 +45,13 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.DEVICE_APPLY_NOT_E */ @Service @Validated +@Slf4j public class DeviceApplyServiceImpl implements DeviceApplyService { - @Resource - private DeviceApplyMapper deviceApplyMapper; + @Resource private DeviceApplyMapper deviceApplyMapper; + @Resource private DeviceConfigFlowService deviceConfigFlowService; + @Resource private DataCollectionService dataCollectionService; + @Resource private DataTemplateService dataTemplateService; @Override public DeviceApplyRespVO createDeviceApply(DeviceApplySaveReqVO createReqVO) { @@ -43,14 +63,71 @@ public class DeviceApplyServiceImpl implements DeviceApplyService { } @Override - public DeviceApplyRespVO createTempData(DeviceApplySaveReqVO createReqVO) { + @Transactional(rollbackFor = Exception.class) + public CommonResult createTempData(DeviceApplySaveReqVO createReqVO) { + String businessType = createReqVO.getBusinessCode(); + if(ObjectUtils.isEmpty(businessType)) + return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "请选择业务类型"); + DeviceConfigFlowDO config = deviceConfigFlowService.getByBusinessType(businessType); + if(ObjectUtils.isEmpty(config)) + return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "业务类型配置不存在("+businessType+"),请联系管理员处理"); DeviceApplyDO deviceApply = BeanUtils.toBean(createReqVO, DeviceApplyDO.class); + if(!ObjectUtils.isEmpty(config.getTemplateKey())){ + DataTemplateDO dataTemplate = dataTemplateService.getLatestDataByKey(config.getTemplateKey()); + if(ObjectUtils.isEmpty(dataTemplate)) + return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "表单编辑器模板不存在("+config.getTemplateKey()+"),请联系管理员处理"); + deviceApply.setTemplateId(dataTemplate.getId()); + } + DataCollectionDO dataCollection = dataCollectionService.getLatestDataCollectionByKey(config.getDataCollectionKey()); + if(ObjectUtils.isEmpty(dataCollection)) + return CommonResult.error(DEVICE_APPLY_NOT_EXISTS.getCode(), "数据集不存在("+config.getDataCollectionKey()+"),请联系管理员处理"); + deviceApply.setBusinessName(config.getBusinessName()); + deviceApply.setDataCollectionId(dataCollection.getId()); + //取当前用户 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + deviceApply.setApplyUser(loginUser.getId()); + deviceApply.setApplyUserName(nickName); + deviceApply.setApplyDepartment(loginUser.getVisitDeptId()); + deviceApply.setApplyDepartmentName(loginUser.getVisitDeptName()); deviceApply.setBusinessStatus(QmsCommonConstant.TEMP_DATA_CODE); deviceApplyMapper.insert(deviceApply); // 返回 - return BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class); + return CommonResult.success(BeanUtils.toBean(deviceApply, DeviceApplyRespVO.class)); } + //保存 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult saveDeviceApply(DeviceApplySaveReqVO updateReqVO) { + + // 校验存在 + DeviceApplyDO backData = getDeviceApply(updateReqVO.getId()); + if(backData == null) + throw exception(DEVICE_APPLY_NOT_EXISTS); + if(QmsCommonConstant.TEMP_DATA_CODE.equals(backData.getBusinessStatus())){ + updateReqVO.setBusinessStatus(QmsCommonConstant.NOT_START); + } + //处理动态表单字段 + String formData = updateReqVO.getFormData(); + if(!ObjectUtils.isEmpty(formData)) { + assembleFormData(formData, updateReqVO); + } + // 更新 + DeviceApplyDO updateObj = BeanUtils.toBean(updateReqVO, DeviceApplyDO.class); + deviceApplyMapper.updateById(updateObj); + return CommonResult.success(true); + } + + private void assembleFormData(String formData, DeviceApplySaveReqVO updateReqVO){ + JSONObject jsonObject = JSONObject.parseObject(formData); + DeviceApplySaveReqVO jsonVo = jsonObject.toJavaObject(DeviceApplySaveReqVO.class); + CopyOptions copyOptions = CopyOptions.create(); + copyOptions.setIgnoreNullValue(true); + BeanUtil.copyProperties(jsonVo, updateReqVO, copyOptions); + } + + @Override public void updateDeviceApply(DeviceApplySaveReqVO updateReqVO) { // 校验存在 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowService.java index 1977e0f..f0c53cf 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowService.java @@ -18,6 +18,8 @@ public interface DeviceConfigFlowService { List getEnableList(DeviceConfigFlowPageReqVO pageReqVO); + DeviceConfigFlowDO getByBusinessType(String code); + /** * 创建设备通用流程配置 * diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowServiceImpl.java index e6a07b3..0ce0136 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/device/service/DeviceConfigFlowServiceImpl.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.resource.device.service; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowPageReqVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowRespVO; import com.zt.plat.module.qms.resource.device.controller.vo.DeviceConfigFlowSaveReqVO; @@ -37,6 +38,15 @@ public class DeviceConfigFlowServiceImpl implements DeviceConfigFlowService { return deviceConfigFlowMapper.selectList(pageReqVO); } + @Override + public DeviceConfigFlowDO getByBusinessType(String code) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(DeviceConfigFlowDO::getBusinessType, code); + query.orderByDesc(DeviceConfigFlowDO::getUpdateTime); + query.last("limit 1"); + return deviceConfigFlowMapper.selectOne(query); + } + @Override public DeviceConfigFlowRespVO createDeviceConfigFlow(DeviceConfigFlowSaveReqVO createReqVO) { // 插入