lipenghui 4 månader sedan
förälder
incheckning
854e1f9c56

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/IotMaintainController.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.pms.controller.admin.maintain;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainRespVO;
 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.maintain.IotMaintainDO;
 import cn.iocoder.yudao.module.pms.service.maintain.IotMaintainService;
 import org.springframework.web.bind.annotation.*;
@@ -43,7 +44,7 @@ public class IotMaintainController {
     @PostMapping("/create")
     @Operation(summary = "创建维修工单")
     @PreAuthorize("@ss.hasPermission('rq:iot-maintain:create')")
-    public CommonResult<Long> createIotMaintain(@Valid @RequestBody IotMaintainSaveReqVO createReqVO) {
+    public CommonResult<Long> createIotMaintain(@Valid @RequestBody IotMaintainSaveVO createReqVO) {
         return success(iotMaintainService.createIotMaintain(createReqVO));
     }
 

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

@@ -14,11 +14,9 @@ public class IotMaintainSaveReqVO {
     private Long id;
 
     @Schema(description = "故障编码", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "故障编码不能为空")
     private String failureCode;
 
     @Schema(description = "故障名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
-    @NotEmpty(message = "故障名称不能为空")
     private String failureName;
 
     @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11515")

+ 17 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/maintain/vo/IotMaintainSaveVO.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.pms.controller.admin.maintain.vo;
+
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 工单物料新增/修改 Request VO")
+@Data
+public class IotMaintainSaveVO {
+    @Schema(description = "维修工单")
+    private IotMaintainSaveReqVO maintain;
+    @Schema(description = "工单物料")
+    private List<IotMaintainMaterialSaveReqVO> maintainMaterials;
+
+}

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/maintain/material/IotMaintainMaterialDO.java

@@ -68,5 +68,9 @@ public class IotMaintainMaterialDO extends BaseDO {
      * 备注
      */
     private String remark;
+    /**
+     * 工单id
+     */
+    private Long maintainId;
 
 }

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/maintain/IotMaintainService.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageR
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveReqVO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainSaveVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
 
 /**
@@ -22,7 +23,7 @@ public interface IotMaintainService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createIotMaintain(@Valid IotMaintainSaveReqVO createReqVO);
+    Long createIotMaintain(@Valid IotMaintainSaveVO createReqVO);
 
     /**
      * 更新维修工单

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

@@ -1,16 +1,29 @@
 package cn.iocoder.yudao.module.pms.service.maintain;
 
+import cn.hutool.core.date.DateUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.material.vo.IotMaintainMaterialSaveReqVO;
 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.maintain.IotMaintainDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.material.IotMaintainMaterialDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.material.IotMaintainMaterialMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+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_MAINTAIN_NOT_EXISTS;
 
@@ -25,12 +38,25 @@ public class IotMaintainServiceImpl implements IotMaintainService {
 
     @Resource
     private IotMaintainMapper iotMaintainMapper;
+    @Resource
+    private IotMaintainMaterialMapper iotMaintainMaterialMapper;
 
     @Override
-    public Long createIotMaintain(IotMaintainSaveReqVO createReqVO) {
-        // 插入
-        IotMaintainDO iotMaintain = BeanUtils.toBean(createReqVO, IotMaintainDO.class);
+    @Transactional(rollbackFor = Exception.class)
+    public Long createIotMaintain(IotMaintainSaveVO createReqVO) {
+        // 插入工单
+        IotMaintainDO iotMaintain = BeanUtils.toBean(createReqVO.getMaintain(), IotMaintainDO.class);
+        iotMaintain.setFailureCode("GZ"+ DateUtil.format(new Date(), "yyyyMMddHHmmss"));
+        iotMaintain.setFailureName(createReqVO.getMaintain().getDeviceName()+DateUtil.format(new Date(), "yyyyMMddHHmmss"));
         iotMaintainMapper.insert(iotMaintain);
+        //插入工单物料
+        List<IotMaintainMaterialSaveReqVO> maintainMaterials = createReqVO.getMaintainMaterials();
+        List<IotMaintainMaterialDO> collect = maintainMaterials.stream().map(e -> {
+            IotMaintainMaterialDO bean = BeanUtils.toBean(e, IotMaintainMaterialDO.class);
+            bean.setMaintainId(iotMaintain.getId());
+            return bean;
+        }).collect(Collectors.toList());
+        iotMaintainMaterialMapper.insertBatch(collect);
         // 返回
         return iotMaintain.getId();
     }