lipenghui преди 3 месеца
родител
ревизия
ba0fe36175

+ 1 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java

@@ -55,5 +55,6 @@ public interface ErrorCodeConstant{
     ErrorCode IOT_MAINTAIN_MATERIALS_NOT_EXISTS = new ErrorCode(144, "维修工单对应物料不存在");
     ErrorCode IOT_MAINTAIN_BOM_NOT_EXISTS = new ErrorCode(145, "维修工单对应维修项BOM不存在");
     ErrorCode THINGS_MODEL_NOT_EXISTS = new ErrorCode(146, "物模型不存在");
+    ErrorCode IOT_MAINTAIN_BOMS_NOT_EXISTS = new ErrorCode(147, "请选择维修工单对应BOM");
 
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbPageReqVO.java

@@ -43,4 +43,6 @@ public class IotInformationDbPageReqVO extends PageParam {
     @Schema(description = "审核状态", example = "2")
     private Integer auditStatus;
 
+    @Schema(description = "设备类别名称")
+    private String className;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/information/vo/IotInformationDbRespVO.java

@@ -52,4 +52,6 @@ public class IotInformationDbRespVO {
     @ExcelProperty("审核状态")
     private Integer auditStatus;
 
+    @Schema(description = "设备类别名称")
+    private String className;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/information/IotInformationDbDO.java

@@ -30,6 +30,8 @@ public class IotInformationDbDO extends BaseDO {
      * 设备分类
      */
     private Long deviceType;
+
+    private String className;
     /**
      * 故障影响
      */

+ 31 - 10
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainServiceImpl.java

@@ -10,20 +10,20 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.bom.vo.IotMaintainBomSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.maintain.materials.vo.IotMaintainMaterialsSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.information.IotInformationDbDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotlockstock.IotLockStockDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotoutbound.IotOutboundDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainBomDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainMaterialsDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.material.IotMaintainMaterialDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.information.IotInformationDbMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotlockstock.IotLockStockMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotoutbound.IotOutboundMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainBomMapper;
@@ -31,6 +31,8 @@ import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMaterialsMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.material.IotMaintainMaterialMapper;
 import cn.iocoder.yudao.module.pms.enums.common.FailureAuditStatusEnum;
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
+import cn.iocoder.yudao.module.pms.service.IotProductClassifyService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.api.dingtalk.DingtalkSendApi;
@@ -38,8 +40,6 @@ import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi;
 import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
-import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
-import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -47,15 +47,12 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_LOCK_STOCK_FUSHU;
-import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAINTAIN_NOT_EXISTS;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.*;
 
 /**
  * 维修工单 Service 实现类
@@ -90,6 +87,12 @@ public class IotMaintainServiceImpl implements IotMaintainService {
     private IotMaintainBomMapper iotMaintainBomMapper;
     @Autowired
     private IotMaintainMaterialsMapper iotMaintainMaterialsMapper;
+    @Autowired
+    private IotDeviceService iotDeviceService;
+    @Autowired
+    private IotProductClassifyService iotProductClassifyService;
+    @Autowired
+    private IotInformationDbMapper iotInformationDbMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -111,7 +114,7 @@ public class IotMaintainServiceImpl implements IotMaintainService {
         //插入工单bom
         List<IotMaintainBomSaveReqVO> maintainMaterials = createReqVO.getMaintainMaterials();
         if (CollUtil.isEmpty(maintainMaterials)) {
-            throw new ServiceException(IOT_MAINTAIN_NOT_EXISTS);
+            throw new ServiceException(IOT_MAINTAIN_BOMS_NOT_EXISTS);
         }
         //插入工单物料
         for (IotMaintainBomSaveReqVO maintainMaterial : maintainMaterials) {
@@ -145,6 +148,24 @@ public class IotMaintainServiceImpl implements IotMaintainService {
             // 将流程实例id 更新到 供应商主数据表
             iotMaintainMapper.updateById(new IotMaintainDO().setId(iotMaintain.getId()).setProcessInstanceId(processInstanceId).setAuditStatus(FailureAuditStatusEnum.PROCESS.getStatus()));
         }
+        //异步写入故障知识库
+        CompletableFuture.runAsync(()->{
+            IotDeviceDO iotDevice = iotDeviceService.getIotDevice(iotMaintain.getDeviceId());
+            if (Objects.nonNull(iotDevice)) {
+                IotProductClassifyDO iotProductClassify = iotProductClassifyService.getIotProductClassify(iotDevice.getAssetClass());
+                IotInformationDbDO informationDbDO = new IotInformationDbDO();
+                informationDbDO.setDeleted(false);
+                informationDbDO.setDeviceType(iotDevice.getAssetClass());
+                informationDbDO.setClassName(Objects.isNull(iotProductClassify)?"":iotProductClassify.getName());
+                informationDbDO.setFailureInfluence(iotMaintain.getFailureInfluence());
+                informationDbDO.setFailureSystem(iotMaintain.getFailureSystem());
+                informationDbDO.setSolutions(iotMaintain.getSolution());
+                informationDbDO.setDescription(iotMaintain.getDescription());
+                informationDbDO.setRemark(iotMaintain.getRemark());
+                iotInformationDbMapper.insert(informationDbDO);
+            }
+        });
+
         return iotMaintain.getId();
     }