lipenghui 1 mese fa
parent
commit
2627c52415

+ 18 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -17,6 +17,7 @@ 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.inspect.IotInspectOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotsapstock.IotSapStockDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
@@ -35,6 +36,7 @@ import cn.iocoder.yudao.module.pms.service.maintain.IotMaintainService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -96,6 +98,8 @@ public class IotStaticController {
     private String yanfanUrl;
     @Autowired
     private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
+    @Autowired
+    private DeptService deptService;
 
     @GetMapping("/main/day")
     public CommonResult<Map<String, Object>> getMaintainDay() {
@@ -219,8 +223,13 @@ public class IotStaticController {
 
 
     @GetMapping("/inspect/status")
-    public CommonResult<Map<String, Long>> getInspectStatusInfo() {
-        List<IotInspectOrderDO> iotInspectOrderDOS = iotInspectOrderMapper.selectList();
+    public CommonResult<Map<String, Long>> getInspectStatusInfo(IotCountDataDO vo) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(vo.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(vo.getDeptId());
+            ids.add(vo.getDeptId());
+        }
+        List<IotInspectOrderDO> iotInspectOrderDOS = iotInspectOrderMapper.selectListStat(vo, ids);
         Map<String, Long> order = iotInspectOrderDOS.stream().collect(Collectors.groupingBy(IotInspectOrderDO::getStatus, Collectors.counting()));
         return CommonResult.success(order);
     }
@@ -482,8 +491,13 @@ public class IotStaticController {
     }
 
     @GetMapping("/inspect/device")
-    public CommonResult<Map<String, Integer>> getDeviceStatus() {
-        List<IotInspectOrderDetailDO> detailDOList = iotInspectOrderDetailMapper.selectList();
+    public CommonResult<Map<String, Integer>> getDeviceStatus(IotCountDataDO vo) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(vo.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(vo.getDeptId());
+            ids.add(vo.getDeptId());
+        }
+        List<IotInspectOrderDetailDO> detailDOList = iotInspectOrderDetailMapper.selectListStat(vo, ids);
         Map<Long, List<IotInspectOrderDetailDO>> collect = detailDOList.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getOrderId));
         AtomicInteger todo = new AtomicInteger();
         AtomicInteger finished = new AtomicInteger();

+ 15 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDetailMapper.java

@@ -5,11 +5,17 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectDeviceVo;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+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.iotcountdata.IotCountDataDO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
 /**
  * 巡检工单巡检明细 Mapper
  *
@@ -32,7 +38,14 @@ public interface IotInspectOrderDetailMapper extends BaseMapperX<IotInspectOrder
                 .orderByDesc(IotInspectOrderDetailDO::getId));
     }
 
-    IPage<IotInspectDeviceVo> getDeviceStatusWei(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO);
-    IPage<IotInspectDeviceVo> getDeviceStatusYi(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO);
+    default List<IotInspectOrderDetailDO> selectListStat(IotCountDataDO vo, Set<Long> ids) {
+        return selectList(new LambdaQueryWrapperX<IotInspectOrderDetailDO>()
+                .betweenIfPresent(IotInspectOrderDetailDO::getCreateTime, vo.getCreateTime())
+                .inIfPresent(IotInspectOrderDetailDO::getDeptId, ids)
+        );
+    }
+
+    IPage<IotInspectDeviceVo> getDeviceStatusWei(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
+    IPage<IotInspectDeviceVo> getDeviceStatusYi(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
 
 }

+ 11 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderMapper.java

@@ -4,13 +4,17 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 巡检工单 Mapper
@@ -57,4 +61,11 @@ public interface IotInspectOrderMapper extends BaseMapperX<IotInspectOrderDO> {
                 .betweenIfPresent(IotInspectOrderDO::getCreateTime, reqVO.getCreateTime())
                 .orderByAsc(IotInspectOrderDO::getCreateTime));
     }
+
+    default List<IotInspectOrderDO> selectListStat(IotCountDataDO vo, Set<Long> ids) {
+        return selectList(new LambdaQueryWrapperX<IotInspectOrderDO>()
+                .betweenIfPresent(IotInspectOrderDO::getCreateTime, vo.getCreateTime())
+                        .inIfPresent(IotInspectOrderDO::getDeptId, ids)
+                );
+    }
 }

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

@@ -7,13 +7,19 @@ import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectO
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
 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.system.service.dept.DeptService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_INSPECT_ORDER_DETAIL_NOT_EXISTS;
 
@@ -28,6 +34,8 @@ public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailSe
 
     @Resource
     private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
+    @Autowired
+    private DeptService deptService;
 
     @Override
     public Long createIotInspectOrderDetail(IotInspectOrderDetailSaveReqVO createReqVO) {
@@ -74,12 +82,17 @@ public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailSe
     @Override
     public PageResult<IotInspectDeviceVo> getDeviceStatus(IotInspectOrderDetailPageReqVO pageReqVO) {
         IPage<IotInspectDeviceVo> page;
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
         if ("todo".equals(pageReqVO.getStatus())) {
             page = iotInspectOrderDetailMapper.getDeviceStatusWei(
-                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);
         } else {
             page = iotInspectOrderDetailMapper.getDeviceStatusYi(
-                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);
         }
 
         return new PageResult<>(page.getRecords(), page.getTotal());

+ 38 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotInspectOrderDetailMapper.xml

@@ -10,14 +10,15 @@
      -->
     <select id="getDeviceStatusWei"
             resultType="cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectDeviceVo">
-        select * from(select order_id, device_id,create_time, if_normal,
+        select * from(select order_id, device_id,create_time, if_normal,dept_id,
         (select inspect_order_title from rq_iot_inspect_order aa where aa.id = fin.order_id) order_name,
         (select device_name from rq_iot_device aa where aa.id = fin.device_id) device_name,
         (select device_code from rq_iot_device aa where aa.id = fin.device_id) device_code
         from (SELECT
         order_id,
         device_id,
-        DATE_FORMAT(max(create_time), '%Y-%m-%d')  create_time,
+        max(create_time)  create_time,
+        max(dept_id) dept_id,
             '未填写' AS if_normal
         FROM
         rq_iot_inspect_order_detail
@@ -32,19 +33,36 @@
             <if test="reqVO.deviceCode!=null and reqVO.deviceCode!=''">
                 and finall.device_code LIKE CONCAT('%',#{reqVO.deviceCode},'%')
             </if>
+            <if test="reqVO.createTime != null and reqVO.createTime.length > 0">
+                <choose>
+                    <when test="reqVO.createTime.length == 1">
+                        AND finall.create_time = #{reqVO.createTime[0],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler}
+                    </when>
+                    <otherwise>
+                        AND finall.create_time BETWEEN #{reqVO.createTime[0],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler} AND #{reqVO.createTime[1],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler}
+                    </otherwise>
+                </choose>
+            </if>
+            <if test="deptIds != null and deptIds.size &gt; 0">
+                AND finall.dept_id IN
+                <foreach collection="deptIds" index="index" item="key" open="(" separator="," close=")">
+                    #{key}
+                </foreach>
+            </if>
         </where>
         order by create_time desc
     </select>
     <select id="getDeviceStatusYi"
             resultType="cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectDeviceVo">
-        select * from(select order_id, device_id,create_time, if_normal,
+        select * from(select order_id, device_id,create_time, if_normal,dept_id,
         (select inspect_order_title from rq_iot_inspect_order aa where aa.id = fin.order_id) order_name,
         (select device_name from rq_iot_device aa where aa.id = fin.device_id) device_name,
         (select device_code from rq_iot_device aa where aa.id = fin.device_id) device_code
         from (SELECT
         order_id,
         device_id,
-        DATE_FORMAT(max(create_time), '%Y-%m-%d')  create_time,
+        max(create_time) create_time,
+        max(dept_id) dept_id,
         '已填写' AS if_normal
         FROM
         rq_iot_inspect_order_detail
@@ -59,6 +77,22 @@
             <if test="reqVO.deviceCode!=null and reqVO.deviceCode!=''">
                 and finall.device_code LIKE CONCAT('%',#{reqVO.deviceCode},'%')
             </if>
+            <if test="reqVO.createTime != null and reqVO.createTime.length > 0">
+                <choose>
+                    <when test="reqVO.createTime.length == 1">
+                        AND finall.create_time = #{reqVO.createTime[0],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler}
+                    </when>
+                    <otherwise>
+                        AND finall.create_time BETWEEN #{reqVO.createTime[0],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler} AND #{reqVO.createTime[1],typeHandler=org.apache.ibatis.type.LocalDateTimeTypeHandler}
+                    </otherwise>
+                </choose>
+            </if>
+            <if test="deptIds != null and deptIds.size &gt; 0">
+                AND finall.dept_id IN
+                <foreach collection="deptIds" index="index" item="key" open="(" separator="," close=")">
+                    #{key}
+                </foreach>
+            </if>
         </where>
         order by create_time desc
     </select>