lipenghui před 3 měsíci
rodič
revize
6ac2c901d8

+ 21 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -4,7 +4,11 @@ import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectO
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -18,6 +22,7 @@ import javax.validation.*;
 import javax.servlet.http.*;
 import java.util.*;
 import java.io.IOException;
+import java.util.stream.Collectors;
 
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -39,6 +44,10 @@ public class IotInspectOrderController {
 
     @Resource
     private IotInspectOrderService iotInspectOrderService;
+    @Autowired
+    private IotInspectOrderDetailService iotInspectOrderDetailService;
+    @Autowired
+    private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
 
     @PostMapping("/create")
     @Operation(summary = "创建巡检工单")
@@ -70,7 +79,11 @@ public class IotInspectOrderController {
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
     public CommonResult<IotInspectOrderRespVO> getIotInspectOrder(@RequestParam("id") Long id) {
         IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(id);
-        return success(BeanUtils.toBean(iotInspectOrder, IotInspectOrderRespVO.class));
+        IotInspectOrderRespVO bean = BeanUtils.toBean(iotInspectOrder, IotInspectOrderRespVO.class);
+        List<IotInspectOrderDetailDO> orderId = iotInspectOrderDetailMapper.selectList("order_id", iotInspectOrder.getId());
+        Map<Long, List<IotInspectOrderDetailDO>> collect = orderId.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
+        bean.setDetail(collect);
+        return success(bean);
     }
 
     @GetMapping("/page")
@@ -94,4 +107,11 @@ public class IotInspectOrderController {
                         BeanUtils.toBean(list, IotInspectOrderRespVO.class));
     }
 
+    @PostMapping("/write/{orderId}")
+    @Operation(summary = "导出巡检工单 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:create')")
+    public void updateItemProblem(@PathVariable("orderId") Long orderId, @RequestBody Map<String, String> requestMaps) {
+        iotInspectOrderService.writeInspectOrderDetail(requestMaps, orderId);
+    }
+
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo;
 
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -45,4 +46,5 @@ public class IotInspectOrderRespVO {
     private String deviceIds;
 
     private String type;
+    private Map<Long, List<IotInspectOrderDetailDO>> detail;
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/InspectCreateOrderJob.java

@@ -98,7 +98,7 @@ public class InspectCreateOrderJob implements JobHandler {
                 IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
                 detailDO.setOrderId(iotInspectOrderDO.getId());
                 detailDO.setDeviceId(routeDO.getDeviceId());
-                detailDO.setItemId(Long.valueOf(String.valueOf(item.get("itemId"))));
+                detailDO.setItemId(Objects.isNull(item.get("itemId"))?null:Long.valueOf(String.valueOf(item.get("itemId"))));
                 detailDO.setIndexId(Long.valueOf(String.valueOf(item.get("index"))));
                 detailDO.setDeleted(false);
                 detailDO.setDeptId(iotInspectPlan.getDeptId());

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

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectO
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
 
 import javax.validation.Valid;
+import java.util.Map;
 
 /**
  * 巡检工单 Service 接口
@@ -13,7 +14,7 @@ import javax.validation.Valid;
  * @author 芋道源码
  */
 public interface IotInspectOrderService {
-
+    void writeInspectOrderDetail(Map<String, String> requestMaps, Long orderId);
     /**
      * 创建巡检工单
      *

+ 92 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderServiceImpl.java

@@ -1,15 +1,25 @@
 package cn.iocoder.yudao.module.pms.service.inspect;
 
+import cn.hutool.core.collection.CollUtil;
 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.inspect.order.vo.IotInspectOrderPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectRouteDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_INSPECT_ORDER_NOT_EXISTS;
@@ -25,6 +35,88 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
 
     @Resource
     private IotInspectOrderMapper iotInspectOrderMapper;
+    @Autowired
+    private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void writeInspectOrderDetail(Map<String, String> requestMap, Long orderId) {
+        String ifNormal = requestMap.get("ifNormal");
+        String description = requestMap.get("description");
+        String picUrl = requestMap.get("picUrl");
+        String deviceId = requestMap.get("deviceId");
+        String indexId = requestMap.get("indexId");
+        IotInspectOrderDO order = iotInspectOrderMapper.selectById(orderId);
+        if (Objects.isNull(order)){
+            throw exception(IOT_INSPECT_ORDER_NOT_EXISTS);
+        }
+        //删除已有的
+//        IotInspectRouteDO routeDO = JSON.parseArray(order.getDeviceIds(), IotInspectRouteDO.class).stream().filter(e -> String.valueOf(e.getDeviceId()).equals(deviceId)).findFirst().get();
+//
+//        List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectByMap(ImmutableMap.of("orderId", orderId, "deviceId", deviceId, "itemId", Long.valueOf(String.valueOf(map.get("itemId")))));
+//        if (CollUtil.isNotEmpty(details)){
+//            iotInspectOrderDetailMapper.deleteByIds(details);
+//        }
+//        IotInspectOrderDetailDO detailDO = new IotInspectOrderDetailDO();
+//        detailDO.setOrderId(orderId);
+//        detailDO.setDeviceId(Long.valueOf(deviceId));
+//        detailDO.setItemId(Long.valueOf(String.valueOf(map.get("itemId"))));
+//        detailDO.setIfNormal("1".equals(ifNormal));
+//        detailDO.setDescription(description);
+//        detailDO.setPicUrl(picUrl);
+//        detailDO.setIndexId(Long.valueOf(indexId));
+//        iotInspectOrderDetailMapper.insert(detailDO);
+        //更新order的json串
+        List<IotInspectRouteDO> routeDOS = JSON.parseArray(order.getDeviceIds(), IotInspectRouteDO.class);
+//        routeDOS.forEach(routeDO -> {
+//            List<Map> maps = JSON.parseArray(routeDO.getItemJson(), Map.class);
+//            maps.forEach(e -> {
+//                if (String.valueOf(e.get("index")).equals(indexId)){
+//                    e.put("ifNormal", "true".equals(ifNormal));
+//                    e.put("description", description);
+//                    e.put("picUrl", picUrl);
+//                }
+//            });
+//        });
+        List<IotInspectRouteDO> newArray = new ArrayList<>();
+        for (IotInspectRouteDO routeDO : routeDOS) {
+            IotInspectRouteDO newRoute = new IotInspectRouteDO();
+            BeanUtils.copyProperties(routeDO, newRoute);
+            List<Map> maps = JSON.parseArray(routeDO.getItemJson(), Map.class);
+            List<Map> newMaps = new ArrayList<>();
+            for (Map map : maps) {
+                Map newMap = new HashMap();
+//                BeanUtils.copyProperties(map, newMap);
+                newMap.put("itemId", map.get("itemId"));
+                newMap.put("index", map.get("index"));
+                newMap.put("item", map.get("item"));
+                newMap.put("standard", map.get("standard"));
+                if (Objects.nonNull(map.get("ifNormal"))) {
+                    newMap.put("ifNormal", map.get("ifNormal"));
+                }
+                if (Objects.nonNull(map.get("description"))) {
+                    newMap.put("description", map.get("description"));
+                }
+                if (Objects.nonNull(map.get("picUrl"))) {
+                    newMap.put("picUrl", map.get("picUrl"));
+                }
+                if (String.valueOf(map.get("index")).equals(indexId)) {
+                    newMap.put("ifNormal", "true".equals(ifNormal));
+                    if (StringUtils.isNotBlank(description)) {
+                        newMap.put("description", description);
+                    }
+                    if (StringUtils.isNotBlank(picUrl)) {
+                        newMap.put("picUrl", picUrl);
+                    }
+                }
+                newMaps.add(newMap);
+            }
+            newRoute.setItemJson(JSON.toJSONString(newMaps));
+            newArray.add(newRoute);
+        }
+        order.setDeviceIds(JSON.toJSONString(newArray));
+        iotInspectOrderMapper.updateById(order);
+    }
 
     @Override
     public Long createIotInspectOrder(IotInspectOrderSaveReqVO createReqVO) {