Explorar o código

Merge remote-tracking branch 'origin/20210223' into 20210223

wangyangyang %!s(int64=4) %!d(string=hai) anos
pai
achega
d33613cb22

+ 58 - 6
sms_water/src/main/java/com/huaxu/controller/AppPageReportController.java

@@ -1,10 +1,8 @@
 package com.huaxu.controller;
-import com.huaxu.dto.MonthRevenueDto;
 import com.huaxu.dto.generalView.DeviceWaterSupply;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.ResultStatus;
 import com.huaxu.service.AppPageReportService;
-import com.huaxu.service.RevenueService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -29,11 +27,10 @@ import java.util.Map;
 @RequestMapping("/appPageReport")
 @Api(tags = "App总览报表")
 public class AppPageReportController {
-    @Autowired
-    private RevenueService revenueService;
     @Autowired
     private AppPageReportService appPageReportService;
 
+
     /**
      * @Author wangbo
      * @Description App生产总览数据-本月数据
@@ -200,7 +197,7 @@ public class AppPageReportController {
         Map<String,Object> map = new HashMap<String,Object>();
         map.put("totalReceivable", sellerWaterList.get(0).getReceivableAmount());
         map.put("totalReceived", sellerWaterList.get(0).getReceivedAmount());
-        map.put("amount",sellerWaterList);
+        map.put("amountDetails",sellerWaterList);
         map.put("generalUser",sellerWaterList.get(0).getGeneralUserAmount());
         map.put("bigUser",sellerWaterList.get(0).getBigUserAmount());
         map.put("generalUserRate",generalRate);
@@ -209,6 +206,27 @@ public class AppPageReportController {
         return new AjaxMessage<>(ResultStatus.OK,map);
     }
 
+
+    /**
+     * @Author wangbo
+     * @Description App 营业数据-本月应收实收售水回收率数据
+     * @param companyOrgId 公司ID
+     * @return
+     */
+    @RequestMapping(value = "getRevenueDataForSameMonth ",method = RequestMethod.GET)
+    @ApiOperation(value = "App——营业数据-应收实收售水回收率数据(本月)")
+    public AjaxMessage<Map<String,Object>> getRevenueDataForSameMonth(
+            @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){
+        List<DeviceWaterSupply> sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,1);
+        List<DeviceWaterSupply> sellerAmountList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,1);
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("receivableAmount", sellerWaterList.get(0).getReceivableAmount());
+        map.put("receivedAmount", sellerWaterList.get(0).getReceivedAmount());
+        map.put("sellerAmount",sellerAmountList.get(0).getAmount());
+        map.put("recoveryRate", sellerWaterList.get(0).getReceivableAmount().compareTo(BigDecimal.ZERO)==0? 0 : sellerWaterList.get(0).getReceivedAmount().multiply(new BigDecimal(100)).divide(sellerWaterList.get(0).getReceivableAmount(),2));
+        return new AjaxMessage<>(ResultStatus.OK,map);
+    }
+
     /**
      * @Author wangbo
      * @Description App 营业总览数据-本月应收实收回收率数据
@@ -230,6 +248,7 @@ public class AppPageReportController {
             totalReceivedAmount=totalReceivedAmount.add(amount.getReceivedAmount());
             totalGeneralUser=totalGeneralUser.add(amount.getGeneralUserAmount());
             totalBigUser=totalBigUser.add(amount.getBigUserAmount());
+            amount.setRecoveryRate(totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? BigDecimal.ZERO : totalReceivedAmount.multiply(new BigDecimal(100)).divide(totalReceivableAmount,2));
         }
         BigDecimal sum =totalBigUser.add(totalGeneralUser);
         BigDecimal generalRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:totalGeneralUser.multiply(new BigDecimal(100)).divide(sum,2);
@@ -266,6 +285,8 @@ public class AppPageReportController {
             totalReceivedAmount=totalReceivedAmount.add(amount.getReceivedAmount());
             totalGeneralUser=totalGeneralUser.add(amount.getGeneralUserAmount());
             totalBigUser=totalBigUser.add(amount.getBigUserAmount());
+
+            amount.setRecoveryRate(totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? BigDecimal.ZERO : totalReceivedAmount.multiply(new BigDecimal(100)).divide(totalReceivableAmount,2));
         }
 
         BigDecimal sum =totalBigUser.add(totalGeneralUser);
@@ -345,7 +366,6 @@ public class AppPageReportController {
                 receivableLastYearComparison =receivableLastYearComparison.add(sellerWaterList.get(i).getReceivableAmount());
             }
         }
-
         BigDecimal receivedComparison = receivedLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivedSameYearComparison.multiply(new BigDecimal(100)).divide(receivedLastYearComparison,2);
         BigDecimal receivableComparison = receivableLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivableSameYearComparison.multiply(new BigDecimal(100)).divide(receivableLastYearComparison,2);
         Map<String,Object> map = new HashMap<String,Object>();
@@ -354,5 +374,37 @@ public class AppPageReportController {
         return new AjaxMessage<>(ResultStatus.OK,map);
     }
 
+    @RequestMapping(value = "getSceneAmountForSameMonth",method = RequestMethod.GET)
+    @ApiOperation(value = "App总览——资产情况本月")
+    public AjaxMessage<Object> getSceneAmountForSameMonth(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){
+        Map<String,Object> map = new HashMap<String,Object>();
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,null);
+        List<Map<String,Object>> newAount = appPageReportService.findSceneAmount(companyOrgId,1);
+        map.put("assets",amount);
+        map.put("newAssets",newAount);
+        return new AjaxMessage<>(ResultStatus.OK,map);
+    }
+
+    @RequestMapping(value = "getSceneAmountForSameYear",method = RequestMethod.GET)
+    @ApiOperation(value = "App总览——资产情况本年")
+    public AjaxMessage<Object> getSceneAmountForSameYear(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){
+        Map<String,Object> map = new HashMap<String,Object>();
+        LocalDate now = LocalDate.now();
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,null);
+        List<Map<String,Object>> newAount = appPageReportService.findSceneAmount(companyOrgId,now.getMonthValue());
+        map.put("assets",amount);
+        map.put("newAssets",newAount);
+        return new AjaxMessage<>(ResultStatus.OK,map);
+    }
 
+    @RequestMapping(value = "getSceneAmountForLast12Month",method = RequestMethod.GET)
+    @ApiOperation(value = "App总览——资产情况近一年")
+    public AjaxMessage<Object> getSceneAmountForLast12Month(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){
+        Map<String,Object> map = new HashMap<String,Object>();
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,null);
+        List<Map<String,Object>> newAount = appPageReportService.findSceneAmount(companyOrgId,12);
+        map.put("assets",amount);
+        map.put("newAssets",newAount);
+        return new AjaxMessage<>(ResultStatus.OK,map);
+    }
 }

+ 24 - 8
sms_water/src/main/java/com/huaxu/controller/AppReportMonitorController.java

@@ -6,6 +6,7 @@ import com.huaxu.dto.OrgBaseTreeInfoDto;
 import com.huaxu.dto.generalView.WaterSupplyChart;
 import com.huaxu.dto.homePage.WaterQualityRate;
 import com.huaxu.dto.homePage.WaterQualityRateForScene;
+import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.ResultStatus;
@@ -38,22 +39,39 @@ public class AppReportMonitorController {
     private AppReportMonitorService appReportMonitorService;
 
     @RequestMapping(value = "getSceneByCompany",method = RequestMethod.GET)
-    @ApiOperation(value = "App报表展示————公司查询(点击公司查询水厂)")
+    @ApiOperation(value = "App报表展示——公司场景查询(点击公司查询水厂)")
     public AjaxMessage<List<SceneEntity>> getSceneByCompany(
-            @ApiParam(value = "场景类型名称:水源、水厂、泵站、管网") @RequestParam String sceneTypeName,
+            @ApiParam(value = "场景类型名称:水源、水厂、泵站") @RequestParam String sceneTypeName,
             @ApiParam(value = "公司id") @RequestParam Integer companyOrgId){
         return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getSceneByCompany(sceneTypeName,companyOrgId));
     }
 
-    @RequestMapping(value = "getSceneByCompanyBySearch",method = RequestMethod.GET)
-    @ApiOperation(value = "App报表展示————公司查询(条件查询)")
-    public AjaxMessage<CompanySceneInfoDto> getSceneByCompanyBySearch(
-            @ApiParam(value = "场景类型名称:水源、水厂、泵站、管网") @RequestParam String sceneTypeName,
+
+
+    @RequestMapping(value = "getSceneCompanyBySearch",method = RequestMethod.GET)
+    @ApiOperation(value = "App报表展示——公司场景查询(条件查询)")
+    public AjaxMessage<CompanySceneInfoDto> getSceneCompanyBySearch(
+            @ApiParam(value = "场景类型名称:水源、水厂、泵站") @RequestParam String sceneTypeName,
             @ApiParam(value = "查询条件") @RequestParam(required = false) String condition){
         return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getSceneByCompanyBySearch(sceneTypeName,condition));
     }
 
 
+    @RequestMapping(value = "getDeviceCompanyBySearchForPipeNetwork",method = RequestMethod.GET)
+    @ApiOperation(value = "App报表展示——公司管网设备查询(条件查询)")
+    public AjaxMessage<CompanySceneInfoDto> getDeviceCompanyBySearchForPipeNetwork(
+
+            @ApiParam(value = "查询条件") @RequestParam(required = false) String condition){
+        return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getDeviceByCompanyBySearch(condition));
+    }
+
+    @RequestMapping(value = "getDeviceByCompanyForPipeNetwork",method = RequestMethod.GET)
+    @ApiOperation(value = "App报表展示——公司管网设备查询(点击公司查询水厂)")
+    public AjaxMessage<List<DeviceEntity>> getDeviceByCompanyForPipeNetwork(
+            @ApiParam(value = "公司id") @RequestParam Integer companyOrgId){
+        return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getDeviceByCompany(companyOrgId));
+    }
+
     @RequestMapping(value = "getWaterQualification",method = RequestMethod.GET)
     @ApiOperation(value = "App报表展示——综合水质情况")
     public AjaxMessage<WaterQualityRate> getWaterQualification(){
@@ -98,6 +116,4 @@ public class AppReportMonitorController {
         return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getWaterLevelForWaterSource(sceneId));
     }
 
-
-
 }

+ 28 - 2
sms_water/src/main/java/com/huaxu/dao/AppReportMonitorMapper.java

@@ -1,6 +1,10 @@
 package com.huaxu.dao;
 
+import com.huaxu.dto.DeviceDataInfoDto;
+import com.huaxu.dto.OrgBaseTreeInfoDto;
+import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.SceneEntity;
+import com.huaxu.model.ProgramItem;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -14,7 +18,29 @@ import java.util.List;
 @Mapper
 public interface AppReportMonitorMapper {
 
-    List<SceneEntity> getSceneByCompany(@Param("sceneType") String sceneType,@Param("companyOrgId") Integer companyOrgId );
+    List<SceneEntity> getSceneByCompany(@Param("sceneType") String sceneType,@Param("companyOrgId") Integer companyOrgId ,
+                                        @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                        @Param("permissonType")Integer permissonType,
+                                        @Param("programItems")List<ProgramItem> programItems);
+
+    List<DeviceEntity> getDeviceByCompany(@Param("companyOrgId") Integer companyOrgId ,
+                                        @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                        @Param("permissonType")Integer permissonType,
+                                        @Param("programItems")List<ProgramItem> programItems);
+
+    List<Integer> getCompanyBySceneCondition(@Param("sceneType") String sceneType,@Param("condition") String condition ,
+                                             @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                             @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+    List<Integer> getCompanyByDeviceCondition(@Param("condition") String condition ,
+                                             @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                             @Param("permissonType")Integer permissonType,
+                                             @Param("programItems")List<ProgramItem> programItems);
+
+
+
+
+
 
-    List<Integer> getCompanyBySceneCondition(@Param("sceneType") String sceneType,@Param("condition") String condition );
 }

+ 5 - 0
sms_water/src/main/java/com/huaxu/dao/SceneMapper.java

@@ -3,7 +3,10 @@ package com.huaxu.dao;
 import com.huaxu.entity.SceneEntity;
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huaxu.entity.SceneTypeEntity;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -41,5 +44,7 @@ public interface SceneMapper extends BaseMapper<SceneEntity> {
 
     SceneEntity findParentSceneById(@Param(value = "id")Long id);
 
+    List<Map<String,Object>> findSceneAmount(@Param("scene") SceneEntity sceneEntity,@Param("months") Integer months);
+
     /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 3 - 2
sms_water/src/main/java/com/huaxu/dao/SceneTypeMapper.java

@@ -3,6 +3,8 @@ package com.huaxu.dao;
 import com.huaxu.entity.SceneTypeEntity;
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -26,10 +28,9 @@ public interface SceneTypeMapper extends BaseMapper<SceneTypeEntity> {
 
      SceneTypeEntity findSceneTypeById(Serializable id);
 
-
      List<SceneTypeEntity> findList(SceneTypeEntity sceneTypeEntity);
 
-    List<SceneTypeEntity> findByParentSceneTypeIds(@Param(value = "Ids") Long[] Ids);
+     List<SceneTypeEntity> findByParentSceneTypeIds(@Param(value = "Ids") Long[] Ids);
 
      /**删除相关方法  使用mybatis-plus集成的 **/
 }

+ 5 - 1
sms_water/src/main/java/com/huaxu/dto/CompanySceneInfoDto.java

@@ -1,5 +1,6 @@
 package com.huaxu.dto;
 
+import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.SceneEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -19,11 +20,14 @@ public class CompanySceneInfoDto implements Serializable {
     private List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos;
     @ApiModelProperty("第一个公司的场景信息")
     private List<SceneEntity> sceneEntities;
+    @ApiModelProperty("第一个公司的设备信息")
+    private List<DeviceEntity> deviceEntities;
 
     public CompanySceneInfoDto(){}
 
-    public CompanySceneInfoDto(List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos,List<SceneEntity> sceneEntities){
+    public CompanySceneInfoDto(List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos,List<SceneEntity> sceneEntities,List<DeviceEntity> deviceEntities){
         this.orgBaseTreeInfoDtos =orgBaseTreeInfoDtos;
         this.sceneEntities =sceneEntities;
+        this.deviceEntities =deviceEntities;
     }
 }

+ 3 - 0
sms_water/src/main/java/com/huaxu/dto/generalView/DeviceWaterSupply.java

@@ -43,6 +43,9 @@ public class DeviceWaterSupply implements Serializable {
     @ApiModelProperty("大客户用量")
     @JsonSerialize(using = BigDecimalJsonSerializer.class)
     private BigDecimal bigUserAmount = BigDecimal.ZERO;
+    @ApiModelProperty("回收率")
+    @JsonSerialize(using = BigDecimalJsonSerializer.class)
+    private BigDecimal recoveryRate = BigDecimal.ZERO;
     @ApiModelProperty("日期")
     private LocalDate date;
     @ApiModelProperty("日期格式化")

+ 4 - 0
sms_water/src/main/java/com/huaxu/service/AppPageReportService.java

@@ -1,6 +1,8 @@
 package com.huaxu.service;
 
 import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.entity.SceneEntity;
+import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -23,5 +25,7 @@ public interface AppPageReportService {
 
     BigDecimal CalculationComparison(List<DeviceWaterSupply> sameWaterList, List<DeviceWaterSupply> lastWaterList);
 
+    List<Map<String,Object>> findSceneAmount(Long companyOrgId,Integer months);
+
     void CalculationNrw(List<DeviceWaterSupply> supplyWaterList, List<DeviceWaterSupply> makingWaterList,List<DeviceWaterSupply> sellerWaterList,Map<String,Object> map);
 }

+ 8 - 0
sms_water/src/main/java/com/huaxu/service/AppReportMonitorService.java

@@ -1,8 +1,10 @@
 package com.huaxu.service;
 
 import com.huaxu.dto.CompanySceneInfoDto;
+import com.huaxu.dto.DeviceDataInfoDto;
 import com.huaxu.dto.generalView.WaterSupplyChart;
 import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.SceneEntity;
 
 import java.util.List;
@@ -24,9 +26,15 @@ public interface AppReportMonitorService {
 
     CompanySceneInfoDto getSceneByCompanyBySearch(String sceneTypeName, String condition);
 
+    List<DeviceEntity> getDeviceByCompany(Integer companyOrgId);
+
+    CompanySceneInfoDto getDeviceByCompanyBySearch( String condition);
+
     List<WaterSupplyChart> waterEnergyConsumption(Integer sceneId );
 
     List<WaterSupplyChart> getWaterLevelForWaterSource(Integer sceneId );
 
 
+
+
 }

+ 20 - 0
sms_water/src/main/java/com/huaxu/service/impl/AppPageReportServiceImpl.java

@@ -3,8 +3,10 @@ package com.huaxu.service.impl;
 
 import com.huaxu.dao.HomePageReportMapper;
 
+import com.huaxu.dao.SceneMapper;
 import com.huaxu.dto.MonthRevenueDto;
 import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.LoginUser;
 import com.huaxu.service.AppPageReportService;
 import com.huaxu.service.MonitorDataReportService;
@@ -37,6 +39,9 @@ public class AppPageReportServiceImpl implements AppPageReportService {
     @Resource
     private HomePageReportMapper homePageReportMapper;
 
+    @Resource
+    private SceneMapper sceneMapper;
+
     /**
      * App 总览 前N个月的售水量
      * @param companyOrgId
@@ -182,6 +187,21 @@ public class AppPageReportServiceImpl implements AppPageReportService {
         return comparison;
     }
 
+    @Override
+    public List<Map<String,Object>> findSceneAmount(Long companyOrgId,Integer months) {
+        SceneEntity sceneEntity = new SceneEntity();
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if (currentUser != null) {
+            sceneEntity.setTenantId(currentUser.getTenantId());
+            sceneEntity.setProgramItems(currentUser.getProgramItemList());
+            sceneEntity.setUserType(currentUser.getType());
+            //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+            sceneEntity.setPermissonType(currentUser.getPermissonType());
+        }
+        sceneEntity.setCompanyOrgId(companyOrgId);
+        return sceneMapper.findSceneAmount(sceneEntity,months);
+    }
+
     /**
      * App 总览 前N个月的应收实收金额
      * @param companyOrgId

+ 33 - 15
sms_water/src/main/java/com/huaxu/service/impl/AppReportMonitorServiceImpl.java

@@ -8,6 +8,7 @@ import com.huaxu.dto.OrgBaseTreeInfoDto;
 import com.huaxu.dto.generalView.WaterSupplyChart;
 import com.huaxu.dto.generalView.WaterSupplyData;
 import com.huaxu.dto.homePage.WaterQualityRate;
+import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.LoginUser;
 import com.huaxu.service.AppReportMonitorService;
@@ -50,31 +51,46 @@ public class AppReportMonitorServiceImpl  implements AppReportMonitorService {
 
     @Override
     public List<SceneEntity> getSceneByCompany(String sceneTypeName,Integer companyOrgId) {
-
-        return appReportMonitorMapper.getSceneByCompany(sceneTypeName,companyOrgId);
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        return appReportMonitorMapper.getSceneByCompany(sceneTypeName,companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
     }
 
+    @Override
+    public List<DeviceEntity> getDeviceByCompany(Integer companyOrgId) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        return appReportMonitorMapper.getDeviceByCompany(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+    }
     @Override
     public CompanySceneInfoDto getSceneByCompanyBySearch(String sceneTypeName, String condition) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
         //先查询公司
-        List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos = userCenterClient.getCompanyByUser(condition,new ArrayList<>());
+        //模糊查询场景所属公司id
+        List<Integer> companyIds = appReportMonitorMapper.getCompanyBySceneCondition(sceneTypeName,condition,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //根据公司id和输入条件查询公司
+        List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos = userCenterClient.getCompanyByUser(condition,companyIds);
         //有公司的展示第一个公司信息
         if(orgBaseTreeInfoDtos.size() > 0){
-            List<SceneEntity> sceneEntities = appReportMonitorMapper.getSceneByCompany(sceneTypeName,orgBaseTreeInfoDtos.get(0).getId());
-            return new CompanySceneInfoDto(orgBaseTreeInfoDtos,sceneEntities);
+            List<SceneEntity> sceneEntities = appReportMonitorMapper.getSceneByCompany(sceneTypeName,orgBaseTreeInfoDtos.get(0).getId(),loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+            return new CompanySceneInfoDto(orgBaseTreeInfoDtos,sceneEntities,null);
         }
-        //模糊查询场景所属公司id
-        List<Integer> companyIds = appReportMonitorMapper.getCompanyBySceneCondition(sceneTypeName,condition);
-        if(companyIds.size() > 0){
-            //根据场景的公司id查询公司
-            orgBaseTreeInfoDtos = userCenterClient.getCompanyByUser("",companyIds);
-            //有公司的展示第一个公司信息
-            if(orgBaseTreeInfoDtos.size() > 0){
-                List<SceneEntity> sceneEntities = appReportMonitorMapper.getSceneByCompany(sceneTypeName,orgBaseTreeInfoDtos.get(0).getId());
-                return new CompanySceneInfoDto(orgBaseTreeInfoDtos,sceneEntities);
-            }
+
+        return new CompanySceneInfoDto();
+    }
+
+    @Override
+    public CompanySceneInfoDto getDeviceByCompanyBySearch( String condition) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        //模糊查询设备所属公司id
+        List<Integer> companyIds = appReportMonitorMapper.getCompanyByDeviceCondition(condition,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        //先查询公司
+        List<OrgBaseTreeInfoDto> orgBaseTreeInfoDtos = userCenterClient.getCompanyByUser(condition,companyIds);
+        //有公司的展示第一个公司信息
+        if(orgBaseTreeInfoDtos.size() > 0){
+            List<DeviceEntity> deviceEntities = appReportMonitorMapper.getDeviceByCompany(orgBaseTreeInfoDtos.get(0).getId(),loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+            return new CompanySceneInfoDto(orgBaseTreeInfoDtos,null,deviceEntities);
         }
 
+
         return new CompanySceneInfoDto();
     }
 
@@ -181,4 +197,6 @@ public class AppReportMonitorServiceImpl  implements AppReportMonitorService {
         }
         return waterSupplyCharts;
     }
+
+
 }

+ 146 - 3
sms_water/src/main/resources/mapper/AppReportMonitorMapper.xml

@@ -9,10 +9,81 @@
             s.PARENT_SCENE_ID as "parentSceneId"
         from sms_scene_type st
         left join sms_scene s on st.id=s.SCENE_TYPE_ID
-        where st.SCENE_TYPE_NAME =#{sceneType}
+        where st.STATUS = 1 and s.STATUS = 1
+        and st.SCENE_TYPE_NAME =#{sceneType}
         and  s.COMPANY_ORG_ID = #{companyOrgId}
+        and s.TENANT_ID = #{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
         order by s.SCENE_NAME
+    </select>
 
+    <select id="getDeviceByCompany" resultType="com.huaxu.entity.DeviceEntity">
+        select
+            d.id
+            ,d.DEVICE_CODE as "deviceCode"
+            ,d.DEVICE_NAME as "deviceName"
+        from sms_scene_type st
+        left join sms_scene s on st.id=s.SCENE_TYPE_ID
+        left join sms_device_scene ds on ds.SCENE_ID =s.id
+        left join sms_device d on d.id=ds.DEVICE_ID
+        where st.STATUS = 1 and s.STATUS = 1 and ds.`STATUS` =1 and d.`STATUS` =1 and d.ENABLE_STATE =1
+        and st.SCENE_TYPE_NAME = '管网'
+        and  s.COMPANY_ORG_ID = #{companyOrgId}
+        and s.TENANT_ID = #{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+        order by s.SCENE_NAME
     </select>
 
     <select id="getCompanyBySceneCondition" resultType="java.lang.Integer">
@@ -21,11 +92,83 @@
          s.COMPANY_ORG_ID
         from sms_scene_type st
         left join sms_scene s on st.id=s.SCENE_TYPE_ID
-        where
-        st.SCENE_TYPE_NAME =#{sceneType}
+        where st.STATUS = 1 and s.STATUS = 1
+        and st.SCENE_TYPE_NAME =#{sceneType}
         <if test="condition != null and condition !=''">
             and s.SCENE_NAME like concat('%',#{condition},'%')
         </if>
+        and s.TENANT_ID = #{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
+
+    </select>
+
+    <select id="getCompanyByDeviceCondition" resultType="java.lang.Integer">
+        select
+        distinct
+        d.COMPANY_ORG_ID
+        from sms_scene_type st
+        left join sms_scene s on st.id=s.SCENE_TYPE_ID
+        left join sms_device_scene ds on ds.SCENE_ID =s.id
+        left join sms_device d on d.id=ds.DEVICE_ID
+        where st.STATUS = 1 and s.STATUS = 1 and ds.`STATUS` =1 and d.`STATUS` =1 and d.ENABLE_STATE =1
+        and st.SCENE_TYPE_NAME ='管网'
+        <if test="condition != null and condition !=''">
+            and d.DEVICE_NAME like concat('%',#{condition},'%')
+        </if>
+        and s.TENANT_ID = #{tenantId}
+        <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+            <if test="permissonType == 5 or permissonType == 2">
+                and ( s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                or
+                s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                )
+            </if>
+            <if test="permissonType == 4 or permissonType == 3">
+                and s.DEPT_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+            </if>
+            <if test="permissonType == 1">
+                and s.COMPANY_ORG_ID in
+                <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+                    #{item.orgId}
+                </foreach>
+                and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
+            </if>
+        </if>
 
     </select>
 

+ 46 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -315,4 +315,50 @@
         left join sms_scene t2 on substring_index(substring_index(t1.parent_scene_ids, ',', 2), ',', -1)=t2.id
         where t1.id=#{id}
     </select>
+    <!--根据用户权限统计一级场景个数-->
+    <select id="findSceneAmount" resultType="map">
+        select count(a.ID) amount,b.SCENE_TYPE_NAME sceneTypeName
+        from sms_scene a INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+        <where>
+            a.PARENT_SCENE_ID=0
+            and a.STATUS=1
+            <if test="months != null">
+                and a.run_time>=date_sub(date_format(curdate(), '%y-%m-1' ), interval #{months}-1 month)
+            </if>
+            <if test="scene.tenantId != null  and scene.tenantId != ''">
+                and a.tenant_id = #{scene.tenantId}
+            </if>
+            <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and  scene.programItems != null and scene.programItems.size() > 0">
+                <if test="scene.permissonType == 5 or scene.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="scene.permissonType == 4 or scene.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="scene.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+            and SCENE_TYPE_NAME in('水源','水厂','泵站')
+        </where>
+        group by b.SCENE_TYPE_NAME;
+    </select>
+
+
 </mapper>

+ 4 - 2
user_center/src/main/resources/mapper/OrgMapper.xml

@@ -327,15 +327,17 @@
         where p.`STATUS` = 1
         and p.ORG_TYPE = 'company'
         and p.TENANT_ID = #{tenantId}
+        and (1>2
         <if test="condition != null and condition != ''">
-            and p.org_name like concat('%', #{condition},'%')
+            or p.org_name like concat('%', #{condition},'%')
         </if>
         <if test="companyIds != null and companyIds.size() > 0">
-            and p.id in
+            or p.id in
             <foreach collection="companyIds" item="item" open="(" separator="," close=")">
                 #{item}
             </foreach>
         </if>
+        )
         <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
             and p.id in
             <foreach collection="programItems" item="item" open="(" close=")" separator=",">