Browse Source

故障上报

lipenghui 4 tháng trước cách đây
mục cha
commit
197a19c37e

+ 8 - 0
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java

@@ -50,6 +50,14 @@ public class FileController {
         return success(ImmutableMap.of("path",fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())),"size",size));
     }
 
+    @PostMapping("/upload/path")
+    @Operation(summary = "上传文件", description = "模式一:后端上传文件")
+    public CommonResult<String> uploadFilePath(FileUploadReqVO uploadReqVO) throws Exception {
+        MultipartFile file = uploadReqVO.getFile();
+        String path = uploadReqVO.getPath();
+        return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
+    }
+
     @GetMapping("/presigned-url")
     @Operation(summary = "获取文件预签名地址", description = "模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器")
     public CommonResult<FilePresignedUrlRespVO> getFilePresignedUrl(@RequestParam("path") String path) throws Exception {

+ 1 - 0
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java

@@ -17,4 +17,5 @@ public class FileUploadReqVO {
     @Schema(description = "文件附件", example = "yudaoyuanma.png")
     private String path;
 
+    private String type;
 }

+ 34 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/common/FailureAuditStatusEnum.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.enums.common;
+
+import cn.iocoder.yudao.framework.common.core.ArrayValuable;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.util.Arrays;
+
+/**
+ * 故障上报的审批状态
+ *
+ * @author phli
+ */
+@RequiredArgsConstructor
+@Getter
+public enum FailureAuditStatusEnum implements ArrayValuable<Integer> {
+
+    DRAFT(0, "未提交"),
+    PROCESS(10, "审批中"),
+    APPROVE(20, "审核通过"),
+	REJECT(30, "审核不通过"),
+    CANCEL(40, "已取消");
+
+    private final Integer status;
+    private final String name;
+
+    public static final Integer[] ARRAYS = Arrays.stream(values()).map(FailureAuditStatusEnum::getStatus).toArray(Integer[]::new);
+
+    @Override
+    public Integer[] array() {
+        return ARRAYS;
+    }
+
+}

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportPageReqVO.java

@@ -29,6 +29,9 @@ public class IotFailureReportPageReqVO extends PageParam {
     @Schema(description = "状态", example = "1")
     private String status;
 
+    @Schema(description = "审核状态")
+    private String auditStatus;
+
     @Schema(description = "是否停机")
     private Boolean ifStop;
 
@@ -64,4 +67,6 @@ public class IotFailureReportPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "部门id")
+    private String deptId;
 }

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java

@@ -35,6 +35,9 @@ public class IotFailureReportRespVO {
     @ExcelProperty("状态")
     private String status;
 
+    @Schema(description = "审核状态")
+    private String auditStatus;
+
     @Schema(description = "是否停机")
     @ExcelProperty("是否停机")
     private Boolean ifStop;

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/failure/IotFailureReportDO.java

@@ -48,6 +48,10 @@ public class IotFailureReportDO extends BaseDO {
      * 状态
      */
     private String status;
+    /**
+     * 审批状态
+     */
+    private Integer auditStatus;
     /**
      * 是否停机
      */
@@ -93,4 +97,5 @@ public class IotFailureReportDO extends BaseDO {
      */
     private String processInstanceId;
 
+    private Long deptId;
 }

+ 34 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/listener/FailureBpmStatusListener.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.pms.listener;
+
+import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEventListener;
+import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportService;
+import cn.iocoder.yudao.module.pms.service.failure.IotFailureReportServiceImpl;
+import cn.iocoder.yudao.module.supplier.service.product.SupplierService;
+import cn.iocoder.yudao.module.supplier.service.product.SupplierServiceImpl;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 故障上报监听器实现类
+ *
+ * @author phli
+ */
+@Component
+public class FailureBpmStatusListener extends BpmProcessInstanceStatusEventListener {
+
+    @Resource
+    private IotFailureReportService iotFailureReportService;
+
+    @Override
+    public String getProcessDefinitionKey() {
+        return IotFailureReportServiceImpl.PROCESS_KEY;
+    }
+
+    @Override
+    public void onEvent(BpmProcessInstanceStatusEvent event) {
+        iotFailureReportService.approvalFailureReport(Long.parseLong(event.getBusinessKey()), event.getStatus());
+    }
+
+}

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportService.java

@@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
  * @author 芋道源码
  */
 public interface IotFailureReportService {
+    void approvalFailureReport(Long id, Integer bpmResult);
     /**
      * 提交供应商数据审核
      *

+ 14 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java

@@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
+import cn.iocoder.yudao.module.pms.enums.common.FailureAuditStatusEnum;
 import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
 import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
 import cn.iocoder.yudao.module.system.api.dingtalk.DingtalkSendApi;
@@ -61,6 +62,17 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
     @Resource
     private BpmProcessInstanceApi processInstanceApi;
 
+    @Override
+    public void approvalFailureReport(Long id, Integer bpmResult) {
+        //更新故障上报状态及审核状态
+        IotFailureReportDO failureReportDO = iotFailureReportMapper.selectById(id);
+        failureReportDO.setStatus("trans");//转工单
+        failureReportDO.setAuditStatus(FailureAuditStatusEnum.APPROVE.getStatus());
+        iotFailureReportMapper.insertOrUpdate(failureReportDO);
+        //生成工单
+
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long submitForApproval(Long id) {
@@ -71,8 +83,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
         String processInstanceId = processInstanceApi.createProcessInstance(SecurityFrameworkUtils.getLoginUserId(),
                 new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(id)));
         // 将流程实例id 更新到 供应商主数据表
-        iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId)
-                .setStatus("转工单"));
+        iotFailureReportMapper.updateById(new IotFailureReportDO().setId(id).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
         return 0l;
     }
 
@@ -106,6 +117,7 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
             }));
         } else {
             iotFailureReport.setStatus("reporting");
+            iotFailureReport.setAuditStatus(FailureAuditStatusEnum.DRAFT.getStatus());
         }
         iotFailureReportMapper.insert(iotFailureReport);
         // 返回