Browse Source

历史数据报表

wangyangyang 3 years ago
parent
commit
4d99bccdf8

+ 6 - 0
sms_water/src/main/java/com/huaxu/dao/DeviceMapper.java

@@ -59,6 +59,12 @@ public interface DeviceMapper {
      */
     List<DeviceDto> selectList( @Param("deviceDto") DeviceDto deviceDto);
 
+    /**
+     * 查询设备信息
+     * @return
+     */
+    List<DeviceDto> selectListForReport( @Param("deviceDto") DeviceDto deviceDto);
+
     /**
      * 分页查询
      * @return

+ 5 - 0
sms_water/src/main/java/com/huaxu/dto/DeviceDto.java

@@ -59,6 +59,11 @@ public class DeviceDto extends DeviceEntity {
     @JsonIgnore
     private String userType;
 
+    /** 用户类型 */
+    @ApiModelProperty(value = "用户类型ID",hidden = true)
+    @JsonIgnore
+    private Integer userId;
+
     @ApiModelProperty(value = "是否已经勾选")
     private Integer isCheck;
 

+ 17 - 0
sms_water/src/main/java/com/huaxu/service/AbstractReportService.java

@@ -208,6 +208,23 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
         return devices;
     }
 
+    /**
+     * 查询场景下的所有设备信息
+     * @param ids 场景ID
+     * @return
+     */
+    public List<DeviceDto> findDevicesForReport(Long[] ids){
+        List<DeviceDto> devices = new ArrayList<>();
+        DeviceDto deviceDto = new DeviceDto();
+        for (Long id : ids) {
+            deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
+            if (deviceDto.getSceneIds().size() > 0){
+                devices.addAll(deviceService.selectListForReport(deviceDto));
+            }
+        }
+        return devices;
+    }
+
     /**
      * ids转换场景集合对象
      * @param ids 场景ID

+ 2 - 0
sms_water/src/main/java/com/huaxu/service/DeviceService.java

@@ -50,6 +50,8 @@ public interface DeviceService {
 
     List<DeviceDto> selectList(DeviceDto deviceDto);
 
+    List<DeviceDto> selectListForReport(DeviceDto deviceDto);
+
     List<DeviceDto> selectListByType(DeviceDto deviceDto);
 
     List<DeviceDto> selectListByScene(DeviceDto deviceDto);

+ 1 - 1
sms_water/src/main/java/com/huaxu/service/MonthReportService.java

@@ -320,7 +320,7 @@ public class MonthReportService extends AbstractReportService<MonthReportMapper,
     public Page<ReportDto> findHistoryDataPageReport(IPage<ReportDto> page, ReportQueryDto queryDto) {
         Page<ReportDto> reportPage = new Page<>();
         // 查询场景下的所有设备信息
-        List<DeviceDto> devices = findDevices(queryDto.getIds());
+        List<DeviceDto> devices = findDevicesForReport(queryDto.getIds());
         if (devices.size() == 0) {
             return reportPage;
         }

+ 2 - 2
sms_water/src/main/java/com/huaxu/service/ReportService.java

@@ -253,8 +253,8 @@ public class ReportService {
         if (StringUtils.isEmpty(queryDto.getStartTime()) || StringUtils.isEmpty(queryDto.getEndTime())) {
             throw new ServiceException(500, "开始时间或结束时间为空");
         }
-        queryDto.setStartTime(queryDto.getStartTime() + " 00:00:00");
-        queryDto.setEndTime(queryDto.getEndTime() + " 23:59:59");
+        queryDto.setStartTime(queryDto.getStartTime() );
+        queryDto.setEndTime(queryDto.getEndTime());
         queryDto.setYear(null);
         queryDto.setMonth(null);
     }

+ 13 - 0
sms_water/src/main/java/com/huaxu/service/impl/DeviceServiceImpl.java

@@ -103,6 +103,19 @@ public class DeviceServiceImpl implements DeviceService {
         return deviceDtos;
     }
 
+    @Override
+    public List<DeviceDto> selectListForReport(DeviceDto deviceDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        deviceDto.setTenantId(loginUser.getTenantId());
+        deviceDto.setProgramItems(loginUser.getProgramItemList());
+        deviceDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        deviceDto.setPermissonType(loginUser.getPermissonType());
+        deviceDto.setUserId(loginUser.getId());
+        List<DeviceDto> deviceDtos = deviceMapper.selectListForReport(deviceDto);
+        return deviceDtos;
+    }
+
     @Override
     public List<DeviceDto> selectListByType(DeviceDto deviceDto) {
         LoginUser loginUser = UserUtil.getCurrentUser();

+ 91 - 0
sms_water/src/main/resources/mapper/DeviceMapper.xml

@@ -119,6 +119,97 @@
             </if>
         </if>
 
+    </select>
+
+    <!--通过实体作为筛选条件查询-->
+    <select id="selectListForReport" resultType="com.huaxu.dto.DeviceDto">
+        select
+        distinct
+        <include refid="Base_Column_List"/>
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+            ,s.PARENT_SCENE_ID as "parentSceneId"
+            ,s.SCENE_ID as "sceneId"
+        </if>
+        from sms_device d
+        left join sms_device_type t on d.DEVICE_TYPE_ID = t.id
+
+        <if test="deviceDto.sceneId!= null and deviceDto.sceneId != 0 ">
+            <if test="deviceDto.searchType == null or deviceDto.searchType == 0 ">
+                inner join sms_device_scene s on s.DEVICE_ID=d.ID and (s.SCENE_ID=#{deviceDto.sceneId} or s.parent_scene_id = #{deviceDto.sceneId}) and s.status=1
+            </if>
+            <if test="deviceDto.searchType != null and deviceDto.searchType == 1 ">
+                inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.SCENE_ID=#{deviceDto.sceneId} and s.status=1
+            </if>
+        </if>
+        <if test="deviceDto.sceneIds!= null and deviceDto.sceneIds.size()>0 ">
+            inner join sms_device_scene s on s.DEVICE_ID=d.ID and s.status=1 and s.SCENE_ID in
+            <foreach collection="deviceDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        inner join sms_device_parm dp on dp.DEVICE_ID=d.id and dp.`STATUS`=1
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+          and dp.TENANT_ID= #{deviceDto.tenantId}
+        </if>
+        <if test="deviceDto.sceneIds!= null and deviceDto.sceneIds.size()>0 ">
+          and dp.SCENE_ID in
+            <foreach collection="deviceDto.sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        inner join sms_report_dimension_setting rds on rds.device_parm_id=dp.id and rds.type=1
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+          and rds.user_id= #{deviceDto.userId}
+        </if>
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+          and rds.tenant_id = #{deviceDto.tenantId}
+        </if>
+        and rds.show_on_off=1
+        where d.status = 1
+        <if test="deviceDto.tenantId != null and deviceDto.tenantId != '' ">
+            and d.tenant_id = #{deviceDto.tenantId}
+        </if>
+        <if test="deviceDto.condition != null and deviceDto.condition != ''">
+            and (device_code like concat('%', #{deviceDto.condition},'%') or device_name like concat('%', #{deviceDto.condition},'%'))
+        </if>
+        <if test="deviceDto.companyOrgId != null and deviceDto.companyOrgId != 0 ">
+            and d.COMPANY_ORG_ID=#{deviceDto.companyOrgId}
+        </if>
+        <if test="deviceDto.deptOrgId != null and deviceDto.deptOrgId != 0 ">
+            and d.DEPT_ORG_ID =#{deviceDto.deptOrgId}
+        </if>
+        <if test="deviceDto.enableState != null ">
+            and d.ENABLE_STATE =#{deviceDto.enableState}
+        </if>
+
+        <if test="deviceDto.userType!=null and deviceDto.userType!=-999 and deviceDto.userType!=-9999 and  deviceDto.programItems != null and deviceDto.programItems.size() > 0">
+            <if test="deviceDto.permissonType == 5 or deviceDto.permissonType == 2">
+                and ( d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="deviceDto.permissonType == 4 or deviceDto.permissonType == 3">
+                and d.DEPT_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="deviceDto.permissonType == 1">
+                and d.COMPANY_ORG_ID in
+                <foreach collection="deviceDto.programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (d.DEPT_ORG_ID is null or d.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
     </select>
     <select id="selectListBySceneId" resultType="com.huaxu.dto.DeviceDto">
         select