lipenghui 5 gün önce
ebeveyn
işleme
98e3a6802e

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

@@ -80,4 +80,7 @@ public class IotFailureReportPageReqVO extends PageParam {
     private String deviceCode;
 
     private String failureType;
+
+    @Schema(description = "部门id集合 项目-任务 根据选择的部门筛选设备")
+    private List<Long> deptIds;
 }

+ 74 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotReportFailureController.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.pms.controller.admin.stat;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import com.google.common.collect.ImmutableMap;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.security.PermitAll;
+import javax.validation.Valid;
+import java.util.Objects;
+import java.util.Set;
+
+@Tag(name = "报表故障上报接口")
+@RestController
+@RequestMapping("/rq/report/failure")
+@Validated
+@PermitAll
+public class IotReportFailureController {
+    private final DeptUtil deptUtil;
+    private final DeptService deptService;
+    private final IotFailureReportMapper iotFailureReportMapper;
+
+    public IotReportFailureController(DeptUtil deptUtil, DeptService deptService, IotFailureReportMapper iotFailureReportMapper) {
+        this.deptUtil = deptUtil;
+        this.deptService = deptService;
+        this.iotFailureReportMapper = iotFailureReportMapper;
+    }
+
+    @GetMapping("/status")
+    public CommonResult<ImmutableMap> getFailureStat(@Valid IotFailureReportPageReqVO iotFailureReportPageReqVO) {
+        Set<Long> ids;
+        String companyCode;
+        if (Objects.isNull(iotFailureReportPageReqVO.getDeptId())){
+            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
+            companyCode = deptUtil.getCompanyCode(loginUserDeptId);
+            ids = deptUtil.getDeptIds(companyCode);
+        } else {
+            ids = deptService.getChildDeptIdListFromCache(iotFailureReportPageReqVO.getDeptId());
+            ids.add(iotFailureReportPageReqVO.getDeptId());
+        }
+        iotFailureReportPageReqVO.setStatus("reporting");
+        Long reporting = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO, ids);
+        iotFailureReportPageReqVO.setStatus("trans");
+        Long trans = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO, ids);
+        iotFailureReportPageReqVO.setStatus("finished");
+        Long finished = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO, ids);
+        return CommonResult.success(ImmutableMap.of("reporting", reporting, "trans", trans, "finished", finished));
+    }
+
+    @GetMapping("/page")
+    public CommonResult<PageResult<IotFailureReportDO>> getFailureReportPage(@Valid IotFailureReportPageReqVO iotFailureReportPageReqVO) {
+        Set<Long> ids;
+        String companyCode;
+        if (Objects.isNull(iotFailureReportPageReqVO.getDeptId())){
+            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
+            companyCode = deptUtil.getCompanyCode(loginUserDeptId);
+            ids = deptUtil.getDeptIds(companyCode);
+        } else {
+            ids = deptService.getChildDeptIdListFromCache(iotFailureReportPageReqVO.getDeptId());
+            ids.add(iotFailureReportPageReqVO.getDeptId());
+        }
+        PageResult<IotFailureReportDO> iotFailureReportDOPageResult = iotFailureReportMapper.selectPage(iotFailureReportPageReqVO, ids);
+        return CommonResult.success(iotFailureReportDOPageResult);
+    }
+}

+ 40 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotReportOrderController.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.pms.controller.admin.stat;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.stat.vo.OrderVo;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
+import com.google.common.collect.ImmutableMap;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.security.PermitAll;
+import javax.validation.Valid;
+import java.util.List;
+
+@Tag(name = "报表所有工单接口")
+@RestController
+@RequestMapping("/rq/report/order")
+@Validated
+@PermitAll
+@AllArgsConstructor
+public class IotReportOrderController {
+    private final IotMaintainMapper iotMaintainMapper;
+    private final IotInspectOrderMapper iotInspectOrderMapper;
+    private final IotOpeationFillMapper iotOpeationFillMapper;
+
+    @Operation(summary = "各工单状态数量统计")
+    @GetMapping("/number")
+    public CommonResult<ImmutableMap> getOrderStat(@Valid IotMaintainPageReqVO pageReqVO) {
+        List<OrderVo> orderVos = iotMaintainMapper.selectStatusNumber(pageReqVO);
+        return null;
+    }
+}

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/vo/OrderVo.java

@@ -15,4 +15,5 @@ public class OrderVo extends PageParam {
     private String person;
     private String type;
     private String createTime;
+    private Long num;
 }

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/failure/IotFailureReportMapper.java

@@ -66,4 +66,11 @@ public interface IotFailureReportMapper extends BaseMapperX<IotFailureReportDO>
                 .in(IotFailureReportDO::getStatus, statusList)
                 .in(IotFailureReportDO::getDeviceId, deviceIds));
     }
+
+    default Long selectCountByTimeAndStatus(IotFailureReportPageReqVO reqVO,Set<Long> ids) {
+        return selectCount(new LambdaQueryWrapperX<IotFailureReportDO>()
+                .eqIfPresent(IotFailureReportDO::getStatus, reqVO.getStatus())
+                .inIfPresent(IotFailureReportDO::getDeptId, ids)
+                .betweenIfPresent(IotFailureReportDO::getCreateTime, reqVO.getCreateTime()));
+    }
 }

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/IotMaintainMapper.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainW
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.stat.vo.OrderVo;
 import cn.iocoder.yudao.module.pms.controller.admin.stat.vo.ReportCost;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectItemDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
@@ -92,4 +93,6 @@ public interface IotMaintainMapper extends BaseMapperX<IotMaintainDO> {
         return selectList(new LambdaQueryWrapperX<IotMaintainDO>()
                 .betweenIfPresent(IotMaintainDO::getCreateTime, reqVO.getCreateTime()).inIfPresent(IotMaintainDO::getDeptId, ids));
     }
+
+    List<OrderVo> selectStatusNumber(@Param("reqVO") IotMaintainPageReqVO reqVO);
 }

+ 21 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotMaintainMapper.xml

@@ -71,4 +71,25 @@
             </if>
         </where>
     </select>
+
+    <select id="selectStatusNumber" parameterType="cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO"
+            resultType="cn.iocoder.yudao.module.pms.controller.admin.stat.vo.OrderVo">
+        select status,count(status) as num from rq_iot_maintain a
+        <where>
+            <if test="reqVO.createTime[0] != null">
+                AND a.create_time &gt;= #{reqVO.createTime[0]}
+            </if>
+            <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
+                AND a.create_time &lt;= #{reqVO.createTime[1]}
+            </if>
+            <if test="reqVO.deptIds != null and reqVO.deptIds.size &gt; 0">
+                AND a.dept_id IN
+                <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
+                    #{key}
+                </foreach>
+            </if>
+        </where>
+
+        group by status
+    </select>
 </mapper>