Jelajahi Sumber

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

yuejiaying 4 tahun lalu
induk
melakukan
e4bfc013a9
29 mengubah file dengan 838 tambahan dan 289 penghapusan
  1. 7 0
      operation_manager/src/main/java/com/huaxu/client/UserCenterClient.java
  2. 18 11
      operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java
  3. 2 0
      operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java
  4. 3 0
      operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java
  5. 5 0
      operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java
  6. 40 0
      operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml
  7. 16 168
      sms_water/src/main/java/com/huaxu/controller/AppDataController.java
  8. 6 16
      sms_water/src/main/java/com/huaxu/controller/AppPageReportController.java
  9. 24 10
      sms_water/src/main/java/com/huaxu/controller/AppReportMonitorController.java
  10. 3 2
      sms_water/src/main/java/com/huaxu/controller/ComDisplayController.java
  11. 26 2
      sms_water/src/main/java/com/huaxu/dao/AppReportMonitorMapper.java
  12. 3 0
      sms_water/src/main/java/com/huaxu/dao/MonitorDataReportMapper.java
  13. 5 1
      sms_water/src/main/java/com/huaxu/dto/CompanySceneInfoDto.java
  14. 2 2
      sms_water/src/main/java/com/huaxu/dto/generalView/DeviceWaterSupply.java
  15. 215 0
      sms_water/src/main/java/com/huaxu/service/AppDataService.java
  16. 7 1
      sms_water/src/main/java/com/huaxu/service/AppReportMonitorService.java
  17. 1 1
      sms_water/src/main/java/com/huaxu/service/HomePageReportService.java
  18. 2 0
      sms_water/src/main/java/com/huaxu/service/MonitorDataReportService.java
  19. 37 21
      sms_water/src/main/java/com/huaxu/service/impl/AppReportMonitorServiceImpl.java
  20. 19 8
      sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java
  21. 44 2
      sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java
  22. 146 3
      sms_water/src/main/resources/mapper/AppReportMonitorMapper.xml
  23. 51 1
      sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml
  24. 82 38
      sms_water/src/main/resources/mapper/SceneMapper.xml
  25. 10 0
      user_center/src/main/java/com/huaxu/controller/UserController.java
  26. 2 0
      user_center/src/main/java/com/huaxu/dao/UserMapper.java
  27. 13 0
      user_center/src/main/java/com/huaxu/service/UserService.java
  28. 4 2
      user_center/src/main/resources/mapper/OrgMapper.xml
  29. 45 0
      user_center/src/main/resources/mapper/UserMapper.xml

+ 7 - 0
operation_manager/src/main/java/com/huaxu/client/UserCenterClient.java

@@ -27,4 +27,11 @@ public interface UserCenterClient {
 
     @GetMapping("/user/findUserIdsForOrg")
     List<Long> findUserIdsForOrg();
+
+    /**
+     * 查询权限内的运维人员信息
+     * @return
+     */
+    @GetMapping("/user/findUserListByType")
+    AjaxMessage<List<UserEntity>> findUserListByType();
 }

+ 18 - 11
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderManageController.java

@@ -345,7 +345,6 @@ public class WorkOrderManageController {
         LoginUser loginUser = UserUtil.getCurrentUser();
         workOrderManageDto.setTaskNo(taskNo);
         workOrderManageDto.setOrderStatus(orderStatus);
-        workOrderManageDto.setOrderStatus(orderStatus);
         workOrderManageDto.setEventType(eventType);
         workOrderManageDto.setTenantId(loginUser.getTenantId());
         workOrderManageDto.setOrderTypeId(orderTypeId);
@@ -365,6 +364,21 @@ public class WorkOrderManageController {
         return new AjaxMessage<>(ResultStatus.OK, pages);
     }
 
+    @GetMapping("/maintain/order")
+    @ApiOperation(value = "维护列表/工单")
+    public AjaxMessage<List<WorkOrderManageDto>> selectMaintainOrder(){
+        //根据用户编号,获取用户的权限
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
+        workOrderManageDto.setTenantId(loginUser.getTenantId());
+        workOrderManageDto.setProgramItems(loginUser.getProgramItemList());
+        workOrderManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        workOrderManageDto.setPermissonType(loginUser.getPermissonType());
+        List<WorkOrderManageDto> list = workOrderManageService.selectMaintainOrder(workOrderManageDto);
+        return new AjaxMessage<>(ResultStatus.OK, list);
+    }
+
     @GetMapping("/pending")
     @ApiOperation(value = "查询待处理工单")
     public AjaxMessage<Pagination<WorkOrderManageDto>> selectPendingOrder(
@@ -437,14 +451,6 @@ public class WorkOrderManageController {
         args.put("工单类型",orderType);
         args.put("工单编号",workOrderManage.getTaskNo());
         args.put("url",String.format("?id=%s",workOrderManage.getId().toString()));
-//        if(workOrderManage.getOrderTypeId() == orderTypeId){
-//            List<TaskPorcessResult> handleResult = workFlowService.handleTask(Action.ACTION_AUDIT,workOrderManage.getCurrentTaskId(), args, null);
-//            workOrderManage.setCurrentTaskId(handleResult.size()>0?handleResult.get(0).getCurrentTaskId():null);
-//            workOrderManage.setCurrentUsers(handleResult.size()>0?handleResult.get(0).getCurrentTaskUsers():null);
-//            workOrderManage.setCurrentTaskName(handleResult.size()>0?handleResult.get(0).getCurrentTaskName():null);
-//        }
-//        else{
-//        }
         workFlowService.stopProcessInstance(workOrderManage.getProcessInstanceId());
         ProcessDefinition processDefinition = workFlowService.findProcessDefinition(
                 loginUser.getTenantId(),
@@ -599,12 +605,13 @@ public class WorkOrderManageController {
                 map.put("deptName", userEntity.getDeptOrgName());
                 if (orderStatusMap != null) {
                     map.put("status", orderStatusMap.get("S").toString());
-                    map.put("address", orderStatusMap.get("X")==null?"-":orderStatusMap.get("X").toString() + "," + orderStatusMap.get("Y")==null?"-":orderStatusMap.get("Y").toString());
+                    String X = orderStatusMap.get("X")==null?"-":orderStatusMap.get("X").toString();
+                    String Y = orderStatusMap.get("Y")==null?"-":orderStatusMap.get("Y").toString();
+                    map.put("address",String.format("%s,%s",X,Y));
                     if(!org.apache.commons.lang3.StringUtils.isEmpty(wkid)
                             && wkid.equals("2360")
                             && orderStatusMap.get("X")!=null
                             && orderStatusMap.get("Y")!=null){
-
                         MyPoint myPoint= ConvertXY.ConvertXYToXian80(orderStatusMap.get("X").toString(),
                                 orderStatusMap.get("Y").toString(),moveXY);
                         map.put("coords",myPoint.getX()+","+myPoint.getY());

+ 2 - 0
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -43,6 +43,8 @@ public interface WorkOrderManageMapper {
 
     Page<WorkOrderManageDto> findPage(IPage<WorkOrderManageDto> page, @Param("order") WorkOrderManageDto workOrderManageDto);
 
+    List<WorkOrderManageDto> selectMaintainOrder(@Param("order") WorkOrderManageDto workOrderManageDto);
+
     List<WorkOrderManage> selectByPId(Map<String,Object> map);
 
     Map<String,Object> selectOrderUserStatus(@Param("userId") String userId);

+ 3 - 0
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -85,4 +85,7 @@ public interface WorkOrderManageService {
      * 综合展示-查询工单执行情况
      */
     List<WorkOrderManageDto> selectOrderStatus(WorkOrderManageDto workOrderManageDto);
+
+
+    List<WorkOrderManageDto> selectMaintainOrder(WorkOrderManageDto workOrderManageDto);
 }

+ 5 - 0
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -143,4 +143,9 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     public List<WorkOrderManageDto> selectOrderStatus(WorkOrderManageDto workOrderManageDto) {
         return workOrderManageMapper.selectOrderStatus(workOrderManageDto);
     }
+
+    @Override
+    public List<WorkOrderManageDto> selectMaintainOrder(WorkOrderManageDto workOrderManageDto) {
+        return workOrderManageMapper.selectMaintainOrder(workOrderManageDto);
+    }
 }

+ 40 - 0
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -741,4 +741,44 @@
     )tab1
     group by order_status_name
   </select>
+  <!--维修列表-工单情况(未派单,处理中)-->
+  <select id="selectMaintainOrder" resultMap="BaseResultMap" >
+    select t1.task_no,  t1.address,
+    case when t1.order_status=0 then '未派单' when t1.order_status =1 or t1.order_status=4 then '处理中' end order_status_name,
+    case when t1.event_type=1 then '运维上报' when t1.event_type=2 then '用户上报' when t1.event_type=3 then '设备告警' end  event_type_name
+    from sc_work_order_manage t1
+    <where>
+      t1.order_status !=2 and t1.order_status !=3
+      <if test="order.tenantId != null and order.tenantId != ''">
+        and t1.tenant_id = #{order.tenantId}
+      </if>
+      <if test="order.userType!=null and order.userType!=-999 and order.userType!=-9999 and  order.programItems != null and order.programItems.size() > 0">
+        <if test="order.permissonType == 5 or order.permissonType == 2">
+          and ( t1.department_org_id in
+          <foreach collection="order.programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          or
+          t1.COMPANY_ORG_ID in
+          <foreach collection="order.programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          )
+        </if>
+        <if test="order.permissonType == 4 or order.permissonType == 3">
+          and t1.department_org_id in
+          <foreach collection="order.programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+        </if>
+        <if test="order.permissonType == 1">
+          and t1.COMPANY_ORG_ID in
+          <foreach collection="order.programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          and (t1.department_org_id is null or t1.department_org_id =0)
+        </if>
+      </if>
+    </where>
+  </select>
 </mapper>

+ 16 - 168
sms_water/src/main/java/com/huaxu/controller/AppDataController.java

@@ -5,6 +5,7 @@ import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.AppSmsDataDto;
 import com.huaxu.dto.SceneDataDto;
 import com.huaxu.dto.SceneDataForAppDto;
+import com.huaxu.dto.generalView.WaterSupplyChart;
 import com.huaxu.entity.*;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.ResultStatus;
@@ -29,48 +30,16 @@ import java.util.stream.Collectors;
 @Api(tags = "App数据")
 public class AppDataController {
     @Autowired
-    private MonitorDataReportService monitorDataReportService;
+    private AppDataService appDataService;
     @Autowired
     private SceneService sceneService;
     @Autowired
-    private MonitorInfoService monitorInfoService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private AlarmDetailsService alarmDetailsService;
-    @Autowired
-    private DeviceAttributeSpecsService deviceAttributeSpecsService;
-    @Autowired
-    private DeviceParmService deviceParmService;
+    private MonitorDataReportService monitorDataReportService;
 
     @RequestMapping(value = "getProductionDataForSameMonth", method = RequestMethod.GET)
     @ApiOperation(value = "综合调度——本月供水情况")
     public AjaxMessage<AppSmsDataDto> getMonthWaterSupply(@ApiParam(value = "类型名称(水源、水厂、泵站、售水)") @RequestParam(required = true) String typeName) {
-        //3用水量or供水量or制水量  4 取水量or进水量 5耗电量 6耗药量
-        AppSmsDataDto appSmsDataDto = new AppSmsDataDto();
-        switch (typeName) {
-            case "水源":
-                appSmsDataDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 4, 2).doubleValue());
-                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
-                break;
-            case "水厂":
-                appSmsDataDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 3, 2).doubleValue());
-                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
-                appSmsDataDto.setDrugUsage(monitorDataReportService.getAmountCount(null, null, typeName, 6, 2).doubleValue());
-                break;
-            case "泵站":
-                appSmsDataDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 3, 2).doubleValue());
-                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
-                break;
-            case "售水":
-                appSmsDataDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, null, "水厂", 3, 2).doubleValue());
-                appSmsDataDto.setWaterUsage(monitorDataReportService.getUseAmount(null, 1).doubleValue());
-                double amount = appSmsDataDto.getYieldWaterUsage() - appSmsDataDto.getWaterUsage();
-                if (appSmsDataDto.getYieldWaterUsage() != null && appSmsDataDto.getYieldWaterUsage() != 0d) {
-                    appSmsDataDto.setWaterFeeRecoveryRate(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(appSmsDataDto.getYieldWaterUsage()), 3, BigDecimal.ROUND_HALF_UP).doubleValue() * 100);
-                }
-                break;
-        }
+        AppSmsDataDto appSmsDataDto = appDataService.getProductionDataForSameMonth(typeName);
         return new AjaxMessage<>(ResultStatus.OK, appSmsDataDto);
     }
 
@@ -82,146 +51,25 @@ public class AppDataController {
         return new AjaxMessage<>(ResultStatus.OK, sceneEntities);
     }
 
-    /**
-     * 今日统计量
-     * @param typeName
-     * @param id
-     * @return
-     */
-    private   List<SceneDataDto> getTotalAmount(@ApiParam(value = "类型名称(水源、水厂、泵站、售水)") @RequestParam(required = true) String typeName,
-                                              @ApiParam(value = "场景ID", required = true) @RequestParam Long id) {
-        List<SceneDataDto> sceneDataDtos = new ArrayList<>();
-        switch (typeName) {
-            case "水源":
-                SceneDataDto item1 = new SceneDataDto();
-                item1.setMonitorName("今日取水量");
-                item1.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
-                sceneDataDtos.add(item1);
-                SceneDataDto item2 = new SceneDataDto();
-                item2.setMonitorName("今日耗电量");
-                item2.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
-                sceneDataDtos.add(item2);
-                break;
-            case "水厂":
-                SceneDataDto item5 = new SceneDataDto();
-                item5.setMonitorName("今日进水量");
-                item5.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
-                sceneDataDtos.add(item5);
-                SceneDataDto item3 = new SceneDataDto();
-                item3.setMonitorName("今日制水量");
-                item3.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 3, 1).doubleValue() + "m³");
-                sceneDataDtos.add(item3);
-                SceneDataDto item4 = new SceneDataDto();
-                item4.setMonitorName("今日耗电量");
-                item4.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
-                sceneDataDtos.add(item4);
-                SceneDataDto item6 = new SceneDataDto();
-                item6.setMonitorName("今日耗药量");
-                item6.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 6, 1).doubleValue() + "kg");
-                sceneDataDtos.add(item6);
-                break;
-            case "泵站":
-                SceneDataDto item7 = new SceneDataDto();
-                item7.setMonitorName("今日进水量");
-                item7.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
-                sceneDataDtos.add(item7);
-                SceneDataDto item8 = new SceneDataDto();
-                item8.setMonitorName("今日供水量");
-                item8.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 3, 1).doubleValue() + "m³");
-                sceneDataDtos.add(item8);
-                SceneDataDto item9 = new SceneDataDto();
-                item9.setMonitorName("今日耗电量");
-                item9.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
-                sceneDataDtos.add(item9);
-                break;
-        }
-        return sceneDataDtos;
-    }
 
     @ApiOperation(value = "综合调度——工艺场景(详情)")
     @RequestMapping(value = "/findBySceneId", method = RequestMethod.GET)
     @ResponseBody
     public AjaxMessage<SceneDataForAppDto> findBySceneId(
-            @ApiParam(value = "类型名称(水源、水厂、泵站、售水)") @RequestParam(required = true) String typeName,
+            @ApiParam(value = "类型名称(水源、水厂、泵站)") @RequestParam(required = true) String typeName,
             @ApiParam(value = "场景ID", required = true) @RequestParam Long id) {
-        SceneDataForAppDto returnInfo = new SceneDataForAppDto();
-        SceneEntity sceneEntity = sceneService.findSceneByIdForApp(id);
-        if (sceneEntity != null) {
-            returnInfo.setAddress(sceneEntity.getAddress());
-            returnInfo.setSceneName(sceneEntity.getSceneName());
-            returnInfo.setImagePath(sceneEntity.getSceneImages().size() > 0 ? sceneEntity.getSceneImages().get(0).getImagePath() : null);
-            if (sceneEntity.getParentSceneId().equals("0")) {
-                List<SceneDataDto> sceneDataDtos = getTotalAmount(typeName, id);
-                returnInfo.getInfos().addAll(sceneDataDtos);
-            }
-        } else {
-            return null;
-        }
-        List<SceneDataDto> sceneDataDtos = new ArrayList<>();
-        List<String> deviceCodes = new ArrayList<>();
-        //查询到所有的测点信息
-        List<DeviceParmEntity> deviceParmEntities = deviceParmService.selectByScendId(id.intValue());
-        Map<String, List<AlarmDetailsDto>> alarms = new HashMap<>();
-        Map<String, List<DeviceParmEntity>> parmMap = new HashMap<>();
-        for (DeviceParmEntity deviceParmEntity : deviceParmEntities) {
-            if (!deviceCodes.contains(deviceParmEntity.getDeviceCode())) {
-                deviceCodes.add(deviceParmEntity.getDeviceCode());
-                //查询报警信息
-                List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailsService.selectByDeviceId(deviceParmEntity.getDeviceId());
-                alarms.put(deviceParmEntity.getDeviceCode(), alarmDetailsDtos);
-                List<DeviceParmEntity> deviceParms = new ArrayList<>();
-                deviceParms.add(deviceParmEntity);
-                parmMap.put(deviceParmEntity.getDeviceCode(), deviceParms);
-            } else {
-                parmMap.get(deviceParmEntity.getDeviceId()).add(deviceParmEntity);
-            }
-        }
-        for (String deveiceCode : deviceCodes) {
-            byte[] bytes = redisUtil.get(("sms_water_" + deveiceCode).getBytes());
-            //将报警信息放置map中
-            Map<Integer, AlarmDetailsDto> mapAlarm = new HashMap<>();
-            List<AlarmDetailsDto> alarmDetailsDtos = alarms.get(deveiceCode);
-            mapAlarm = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAttributeId, a -> a, (k1, k2) -> k1));
-            //将缓存中的实时数据放到map中方便进行遍历
-            if (bytes != null && bytes.length > 0) {
-                MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
-                Map<Long, MonitorDataValueEntity> map = new HashMap<>();
-                returnInfo.setCollectDate(monitorDataEntity.getCollectDate());
-                //将缓存中的实时数据放到map中方便进行遍历
-                map = monitorDataEntity.getDataValues().stream().collect(Collectors.toMap(MonitorDataValueEntity::getAttributeId, a -> a, (k1, k2) -> k1));
-                for (DeviceParmEntity item : parmMap.get(deveiceCode)) {
-                    SceneDataDto sceneDataDto = new SceneDataDto();
-                    sceneDataDto.setMonitorName(item.getAttributeName());
-                    //按属性ID查询标签值
-                    DeviceAttributeSpecsEntity deviceAttributeSpecsEntity = new DeviceAttributeSpecsEntity();
-                    deviceAttributeSpecsEntity.setAttributeId(Long.valueOf(item.getAttributeId()));
-                    List<DeviceAttributeSpecsEntity> deviceAttributeSpecsEntities = deviceAttributeSpecsService.findList(deviceAttributeSpecsEntity);
-                    if (map.containsKey(item.getAttributeId())) {
-                        Double value = map.get(item.getAttributeId()).getDataValue();
-                        if (deviceAttributeSpecsEntities.size() > 0) {
-                            if (value != null) {
-                                for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities)
-                                    if (Integer.valueOf(specsEntity.getSpecsValue()) == value.intValue()) {
-                                        sceneDataDto.setMonitorValue(specsEntity.getSpecsName());
-                                    }
-                            }
-                        } else {
-                            if (value != null) {
-                                sceneDataDto.setMonitorValue(String.format("%.3f", map.get(item.getAttributeId()).getDataValue()) + (StringUtils.isNotEmpty(map.get(item.getAttributeId()).getUnit()) ? map.get(item.getAttributeId()).getUnit() : ""));
-                            }
-                        }
-                    }
-                    //判断是否报警
-                    if (mapAlarm.containsKey(item.getAttributeId().intValue()))
-                        sceneDataDto.setIsAlarm(1);
-                    else
-                        sceneDataDto.setIsAlarm(0);
-                    sceneDataDtos.add(sceneDataDto);
-                }
-            }
-        }
-        returnInfo.setInfos(sceneDataDtos);
+        SceneDataForAppDto returnInfo = appDataService.getSceneDataForApp(typeName, id);
         return new AjaxMessage<>(ResultStatus.OK, returnInfo);
     }
 
+    @ApiOperation(value = "综合调度——供水制水电耗(曲线)")
+    @RequestMapping(value = "/findwaterSupplyChartsForCurrentMonth", method = RequestMethod.GET)
+    @ResponseBody
+    public AjaxMessage<List<WaterSupplyChart>> waterSupplyChartsForCurrentMonth(
+            @ApiParam(value = "类型名称(水源、水厂、泵站)") @RequestParam(required = true) String typeName,
+            @ApiParam(value = "场景ID", required = true) @RequestParam Long id) {
+        List<WaterSupplyChart> waterSupplyCharts = monitorDataReportService.waterSupplyChartsForCurrentMonth(typeName, id);
+        return new AjaxMessage<>(ResultStatus.OK, waterSupplyCharts);
+    }
+
 }

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

@@ -378,11 +378,8 @@ public class AppPageReportController {
     @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);
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,1);
+        return new AjaxMessage<>(ResultStatus.OK,amount);
     }
 
     @RequestMapping(value = "getSceneAmountForSameYear",method = RequestMethod.GET)
@@ -390,21 +387,14 @@ public class AppPageReportController {
     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);
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,now.getMonthValue());
+        return new AjaxMessage<>(ResultStatus.OK,amount);
     }
 
     @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);
+        List<Map<String,Object>> amount = appPageReportService.findSceneAmount(companyOrgId,12);
+        return new AjaxMessage<>(ResultStatus.OK,amount);
     }
 }

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

@@ -1,11 +1,10 @@
 package com.huaxu.controller;
 
-import com.huaxu.client.UserCenterClient;
 import com.huaxu.dto.CompanySceneInfoDto;
-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 +37,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 +114,4 @@ public class AppReportMonitorController {
         return new AjaxMessage<>(ResultStatus.OK,appReportMonitorService.getWaterLevelForWaterSource(sceneId));
     }
 
-
-
 }

+ 3 - 2
sms_water/src/main/java/com/huaxu/controller/ComDisplayController.java

@@ -175,11 +175,12 @@ public class ComDisplayController {
             //查询子公司的取水量、制水量 产销差(制水量-售水量)/制水量  X 100%
             receFee.get(0).setIntakeWaterUsage(monitorDataReportService.getAmountCount(companyOrgId, null, "水源", 4, 2).divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
             receFee.get(0).setYieldWaterUsage(monitorDataReportService.getAmountCount(companyOrgId, null, "水厂", 3, 2).divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
+            receFee.get(0).setMeterReadingArrivalRate(BigDecimal.valueOf(receFee.get(0).getMeterReadingArrivalRate()).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(1), 2, BigDecimal.ROUND_HALF_UP).doubleValue());
             double amount = receFee.get(0).getYieldWaterUsage() - waterUsage;
             if (receFee.get(0).getYieldWaterUsage() == 0d)
-                receFee.get(0).setWaterFeeRecoveryRate(0d);
+                receFee.get(0).setWaterFeeRecoveryRate(BigDecimal.valueOf(0).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).doubleValue());
             else
-                receFee.get(0).setWaterFeeRecoveryRate(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(receFee.get(0).getYieldWaterUsage()), 3, BigDecimal.ROUND_HALF_UP).doubleValue());
+                receFee.get(0).setWaterFeeRecoveryRate(BigDecimal.valueOf(amount).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(receFee.get(0).getYieldWaterUsage()), 2, BigDecimal.ROUND_HALF_UP).doubleValue());
         }
         return new AjaxMessage<>(ResultStatus.OK, receFee.get(0));
     }

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

@@ -1,6 +1,8 @@
 package com.huaxu.dao;
 
+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 +16,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 );
 }

+ 3 - 0
sms_water/src/main/java/com/huaxu/dao/MonitorDataReportMapper.java

@@ -129,6 +129,9 @@ public interface MonitorDataReportMapper {
     List<WaterSupplyData> getWaterSupplyData(@Param("tenantId")String tenantId,@Param("sceneTypeName")String sceneTypeName,@Param("userType")String userType,@Param("permissonType")Integer permissonType,
                                              @Param("programItems")List<ProgramItem> programItems);
 
+    List<WaterSupplyData> getWaterSupplyDataForCurrentMonth(@Param("tenantId")String tenantId,@Param("sceneTypeName")String sceneTypeName,@Param("sceneIds")List<Long> sceneIds,@Param("userType")String userType,@Param("permissonType")Integer permissonType,
+                                                            @Param("programItems")List<ProgramItem> programItems);
+
     List<WaterSupplyData> getWaterSupplyDataByMonth(@Param("tenantId")String tenantId,@Param("companyOrgId")Integer companyOrgId,@Param("sceneTypeName")String sceneTypeName,@Param("userType")String userType,@Param("permissonType")Integer permissonType,
                                                     @Param("programItems")List<ProgramItem> programItems);
     List<WaterSupplyData> getWaterSupplyDataByMonthForCurrentMonth(@Param("tenantId")String tenantId,@Param("companyOrgId")Integer companyOrgId,@Param("sceneTypeName")String sceneTypeName,@Param("userType")String userType,@Param("permissonType")Integer permissonType,

+ 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;
     }
 }

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

@@ -52,8 +52,8 @@ public class DeviceWaterSupply implements Serializable {
     private String dateLabel;
 
 
-    public void amountConvert(){
-        this.amount =this.amount.divide(new BigDecimal(10000));
+    public void amountConvert( BigDecimal multipleData){
+        this.amount =this.amount.divide(multipleData);
     }
 
 }

+ 215 - 0
sms_water/src/main/java/com/huaxu/service/AppDataService.java

@@ -0,0 +1,215 @@
+package com.huaxu.service;
+
+import com.huaxu.common.StringUtils;
+import com.huaxu.dto.AlarmDetailsDto;
+import com.huaxu.dto.AppSmsDataDto;
+import com.huaxu.dto.SceneDataDto;
+import com.huaxu.dto.SceneDataForAppDto;
+import com.huaxu.entity.*;
+import com.huaxu.util.ByteArrayUtils;
+import com.huaxu.util.RedisUtil;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class AppDataService {
+    @Autowired
+    private MonitorDataReportService monitorDataReportService;
+    @Autowired
+    private MonitorInfoService monitorInfoService;
+    @Autowired
+    private RedisUtil redisUtil;
+    @Autowired
+    private AlarmDetailsService alarmDetailsService;
+    @Autowired
+    private DeviceAttributeSpecsService deviceAttributeSpecsService;
+    @Autowired
+    private DeviceParmService deviceParmService;
+    @Autowired
+    private SceneService sceneService;
+
+    /**
+     * 查询场景信息
+     *
+     * @param typeName 类型名称(水源、水厂、泵站、售水)
+     * @return
+     */
+    public AppSmsDataDto getProductionDataForSameMonth(String typeName) {
+        //3用水量or供水量or制水量  4 取水量or进水量 5耗电量 6耗药量
+        AppSmsDataDto appSmsDataDto = new AppSmsDataDto();
+        switch (typeName) {
+            case "水源":
+                appSmsDataDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 4, 2).doubleValue());
+                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
+                break;
+            case "水厂":
+                appSmsDataDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 3, 2).doubleValue());
+                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
+                appSmsDataDto.setDrugUsage(monitorDataReportService.getAmountCount(null, null, typeName, 6, 2).doubleValue());
+                break;
+            case "泵站":
+                appSmsDataDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, null, typeName, 3, 2).doubleValue());
+                appSmsDataDto.setPowerUsage(monitorDataReportService.getAmountCount(null, null, typeName, 5, 2).doubleValue());
+                break;
+            case "售水":
+                appSmsDataDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, null, "水厂", 3, 2).doubleValue());
+                appSmsDataDto.setWaterUsage(monitorDataReportService.getUseAmount(null, 1).doubleValue());
+                double amount = appSmsDataDto.getYieldWaterUsage() - appSmsDataDto.getWaterUsage();
+                if (appSmsDataDto.getYieldWaterUsage() != null && appSmsDataDto.getYieldWaterUsage() != 0d) {
+                    appSmsDataDto.setWaterFeeRecoveryRate(BigDecimal.valueOf(amount).divide(BigDecimal.valueOf(appSmsDataDto.getYieldWaterUsage()), 3, BigDecimal.ROUND_HALF_UP).doubleValue() * 100);
+                }
+                break;
+        }
+        return appSmsDataDto;
+    }
+    /**
+     * 今日统计量
+     * @param typeName 类型名称(水源、水厂、泵站、售水)
+     * @param id 场景ID
+     * @return
+     */
+    private List<SceneDataDto> getTotalAmount(String typeName,Long id) {
+        List<SceneDataDto> sceneDataDtos = new ArrayList<>();
+        switch (typeName) {
+            case "水源":
+                SceneDataDto item1 = new SceneDataDto();
+                item1.setMonitorName("今日取水量");
+                item1.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
+                sceneDataDtos.add(item1);
+                SceneDataDto item2 = new SceneDataDto();
+                item2.setMonitorName("今日耗电量");
+                item2.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
+                sceneDataDtos.add(item2);
+                break;
+            case "水厂":
+                SceneDataDto item5 = new SceneDataDto();
+                item5.setMonitorName("今日进水量");
+                item5.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
+                sceneDataDtos.add(item5);
+                SceneDataDto item3 = new SceneDataDto();
+                item3.setMonitorName("今日制水量");
+                item3.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 3, 1).doubleValue() + "m³");
+                sceneDataDtos.add(item3);
+                SceneDataDto item4 = new SceneDataDto();
+                item4.setMonitorName("今日耗电量");
+                item4.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
+                sceneDataDtos.add(item4);
+                SceneDataDto item6 = new SceneDataDto();
+                item6.setMonitorName("今日耗药量");
+                item6.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 6, 1).doubleValue() + "kg");
+                sceneDataDtos.add(item6);
+                break;
+            case "泵站":
+                SceneDataDto item7 = new SceneDataDto();
+                item7.setMonitorName("今日进水量");
+                item7.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 4, 1).doubleValue() + "m³");
+                sceneDataDtos.add(item7);
+                SceneDataDto item8 = new SceneDataDto();
+                item8.setMonitorName("今日供水量");
+                item8.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 3, 1).doubleValue() + "m³");
+                sceneDataDtos.add(item8);
+                SceneDataDto item9 = new SceneDataDto();
+                item9.setMonitorName("今日耗电量");
+                item9.setMonitorValue(monitorDataReportService.getAmountCount(null, id.intValue(), typeName, 5, 1).doubleValue() + "kw");
+                sceneDataDtos.add(item9);
+                break;
+        }
+        return sceneDataDtos;
+    }
+
+    /**
+     * 工艺场景(详情)
+     * @param typeName 类型名称(水源、水厂、泵站、售水)
+     * @param id 场景ID
+     * @return
+     */
+    public SceneDataForAppDto getSceneDataForApp(String typeName,Long id) {
+        SceneDataForAppDto returnInfo = new SceneDataForAppDto();
+        SceneEntity sceneEntity = sceneService.findSceneByIdForApp(id);
+        if (sceneEntity != null) {
+            returnInfo.setAddress(sceneEntity.getAddress());
+            returnInfo.setSceneName(sceneEntity.getSceneName());
+            returnInfo.setImagePath(sceneEntity.getSceneImages().size() > 0 ? sceneEntity.getSceneImages().get(0).getImagePath() : null);
+            if (sceneEntity.getParentSceneId().equals("0")) {
+                List<SceneDataDto> sceneDataDtos = getTotalAmount(typeName, id);
+                returnInfo.getInfos().addAll(sceneDataDtos);
+            }
+        } else {
+            return null;
+        }
+        List<SceneDataDto> sceneDataDtos = new ArrayList<>();
+        List<String> deviceCodes = new ArrayList<>();
+        //查询到所有的测点信息
+        List<DeviceParmEntity> deviceParmEntities = deviceParmService.selectByScendId(id.intValue());
+        Map<String, List<AlarmDetailsDto>> alarms = new HashMap<>();
+        Map<String, List<DeviceParmEntity>> parmMap = new HashMap<>();
+        for (DeviceParmEntity deviceParmEntity : deviceParmEntities) {
+            if (!deviceCodes.contains(deviceParmEntity.getDeviceCode())) {
+                deviceCodes.add(deviceParmEntity.getDeviceCode());
+                //查询报警信息
+                List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailsService.selectByDeviceId(deviceParmEntity.getDeviceId());
+                alarms.put(deviceParmEntity.getDeviceCode(), alarmDetailsDtos);
+                List<DeviceParmEntity> deviceParms = new ArrayList<>();
+                deviceParms.add(deviceParmEntity);
+                parmMap.put(deviceParmEntity.getDeviceCode(), deviceParms);
+            } else {
+                parmMap.get(deviceParmEntity.getDeviceId()).add(deviceParmEntity);
+            }
+        }
+        for (String deveiceCode : deviceCodes) {
+            byte[] bytes = redisUtil.get(("sms_water_" + deveiceCode).getBytes());
+            //将报警信息放置map中
+            Map<Integer, AlarmDetailsDto> mapAlarm = new HashMap<>();
+            List<AlarmDetailsDto> alarmDetailsDtos = alarms.get(deveiceCode);
+            mapAlarm = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAttributeId, a -> a, (k1, k2) -> k1));
+            //将缓存中的实时数据放到map中方便进行遍历
+            if (bytes != null && bytes.length > 0) {
+                MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
+                Map<Long, MonitorDataValueEntity> map = new HashMap<>();
+                returnInfo.setCollectDate(monitorDataEntity.getCollectDate());
+                //将缓存中的实时数据放到map中方便进行遍历
+                map = monitorDataEntity.getDataValues().stream().collect(Collectors.toMap(MonitorDataValueEntity::getAttributeId, a -> a, (k1, k2) -> k1));
+                for (DeviceParmEntity item : parmMap.get(deveiceCode)) {
+                    SceneDataDto sceneDataDto = new SceneDataDto();
+                    sceneDataDto.setMonitorName(item.getAttributeName());
+                    //按属性ID查询标签值
+                    DeviceAttributeSpecsEntity deviceAttributeSpecsEntity = new DeviceAttributeSpecsEntity();
+                    deviceAttributeSpecsEntity.setAttributeId(Long.valueOf(item.getAttributeId()));
+                    List<DeviceAttributeSpecsEntity> deviceAttributeSpecsEntities = deviceAttributeSpecsService.findList(deviceAttributeSpecsEntity);
+                    if (map.containsKey(item.getAttributeId())) {
+                        Double value = map.get(item.getAttributeId()).getDataValue();
+                        if (deviceAttributeSpecsEntities.size() > 0) {
+                            if (value != null) {
+                                for (DeviceAttributeSpecsEntity specsEntity : deviceAttributeSpecsEntities)
+                                    if (Integer.valueOf(specsEntity.getSpecsValue()) == value.intValue()) {
+                                        sceneDataDto.setMonitorValue(specsEntity.getSpecsName());
+                                    }
+                            }
+                        } else {
+                            if (value != null) {
+                                sceneDataDto.setMonitorValue(String.format("%.3f", map.get(item.getAttributeId()).getDataValue()) + (StringUtils.isNotEmpty(map.get(item.getAttributeId()).getUnit()) ? map.get(item.getAttributeId()).getUnit() : ""));
+                            }
+                        }
+                    }
+                    //判断是否报警
+                    if (mapAlarm.containsKey(item.getAttributeId().intValue()))
+                        sceneDataDto.setIsAlarm(1);
+                    else
+                        sceneDataDto.setIsAlarm(0);
+                    sceneDataDtos.add(sceneDataDto);
+                }
+            }
+        }
+        returnInfo.setInfos(sceneDataDtos);
+        return returnInfo;
+    }
+}

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

@@ -2,7 +2,7 @@ package com.huaxu.service;
 
 import com.huaxu.dto.CompanySceneInfoDto;
 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 +24,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 );
 
 
+
+
 }

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

@@ -34,7 +34,7 @@ public interface HomePageReportService {
 
     //水库取水15天
     //水库水位15天
-    //水厂制水15天
+    //水厂泵站制水15天
     // 水厂 3 水源 4 水位 12
     List<DeviceWaterSupply> monitorDataFifteenDays(Integer sceneId, String sceneType, Integer parmType);
 

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

@@ -63,6 +63,8 @@ public interface MonitorDataReportService {
     //对比曲线图
     List<WaterSupplyChart> waterSupplyCharts(String sceneTypeName);
 
+    //对比曲线图当月
+    List<WaterSupplyChart> waterSupplyChartsForCurrentMonth(String sceneTypeName,Long sceneId);
 
     List<WaterSupplyChart>  waterSupplyChartsByMonth(String sceneTypeName, Integer companyOrgId);
 

+ 37 - 21
sms_water/src/main/java/com/huaxu/service/impl/AppReportMonitorServiceImpl.java

@@ -7,7 +7,7 @@ import com.huaxu.dto.CompanySceneInfoDto;
 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;
@@ -22,7 +22,6 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -50,31 +49,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();
     }
 
@@ -95,8 +109,8 @@ public class AppReportMonitorServiceImpl  implements AppReportMonitorService {
         WaterSupplyChart waterSupplyChartToday = new WaterSupplyChart();
         waterSupplyChartToday.setSort(localDate.getDayOfMonth());
         waterSupplyChartToday.setDate(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate));
-        waterSupplyChartToday.setWaterData(waterDataCountDay);
-        waterSupplyChartToday.setPowerData(powerDataCountDay);
+        waterSupplyChartToday.setWaterData(waterDataCountDay.divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
+        waterSupplyChartToday.setPowerData(powerDataCountDay.divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
 //        waterSupplyChartToday.setDrugData(drugDataCountDay);
 
 
@@ -111,9 +125,9 @@ public class AppReportMonitorServiceImpl  implements AppReportMonitorService {
                         waterSupplyChart.setSort(waterSupplyData.getDay());
 
                         if (waterSupplyData.getParmType() == 3) { //供水
-                            waterSupplyChart.setWaterData(waterSupplyData.getAmount());
+                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
                         } else if (waterSupplyData.getParmType() == 5) {//电耗
-                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
                         }
 //                        else if (waterSupplyData.getParmType() == 6) {//药耗
 //                            waterSupplyChart.setDrugData(waterSupplyData.getAmount());
@@ -181,4 +195,6 @@ public class AppReportMonitorServiceImpl  implements AppReportMonitorService {
         }
         return waterSupplyCharts;
     }
+
+
 }

+ 19 - 8
sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java

@@ -213,14 +213,19 @@ public class HomePageReportServiceImpl implements HomePageReportService {
 
 
     /**
-     * 水厂 3 水源 4 水位 12
+     * 水厂泵站 3 水源 4 水位 12
      * @return
      */
     @Override
     public List<DeviceWaterSupply> monitorDataFifteenDays(Integer sceneId, String sceneType, Integer parmType) {
+        BigDecimal multipleData;
+        if(sceneType.equals("泵站")){
+            multipleData = new BigDecimal("1");
+        }else{
+            multipleData = new BigDecimal("10000");
+        }
         LoginUser loginUser = UserUtil.getCurrentUser();
 
-
         List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getMonitorDataFifteenDays( sceneId, sceneType, parmType,
                 loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
 
@@ -254,7 +259,7 @@ public class HomePageReportServiceImpl implements HomePageReportService {
             } else {
                 deviceWaterSupplies.get(i).setOrderNo(i + 1);
                 if(parmType != 12 ){ //不是水位就除以1000 转化为万
-                    deviceWaterSupplies.get(i).amountConvert();
+                    deviceWaterSupplies.get(i).amountConvert(multipleData);
                 }
                 deviceWaterSupplies.get(i).setDate(newLocalDate);
             }
@@ -342,9 +347,15 @@ public class HomePageReportServiceImpl implements HomePageReportService {
         waterQualityRateForScene.setPressure(pressure!=null?pressure:new BigDecimal("100"));
         return waterQualityRateForScene;
     }
-    //水厂制水、药耗、电耗对比曲线
+    //制水、药耗、电耗对比曲线
     @Override
     public List<WaterSupplyChart> waterEnergyConsumption( Integer sceneId,String sceneType) {
+        BigDecimal multipleData;
+        if(sceneType.equals("泵站")){
+            multipleData = new BigDecimal("1");
+        }else{
+            multipleData = new BigDecimal("10000");
+        }
 
         LoginUser loginUser = UserUtil.getCurrentUser();
         String tenantId = loginUser.getTenantId();
@@ -359,8 +370,8 @@ public class HomePageReportServiceImpl implements HomePageReportService {
         WaterSupplyChart waterSupplyChartToday = new WaterSupplyChart();
         waterSupplyChartToday.setSort(localDate.getDayOfMonth());
         waterSupplyChartToday.setDate(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate));
-        waterSupplyChartToday.setWaterData(waterDataCountDay.divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
-        waterSupplyChartToday.setPowerData(powerDataCountDay);
+        waterSupplyChartToday.setWaterData(waterDataCountDay.divide(multipleData,3,BigDecimal.ROUND_HALF_UP));
+        waterSupplyChartToday.setPowerData(powerDataCountDay.divide(multipleData,3,BigDecimal.ROUND_HALF_UP));
         waterSupplyChartToday.setDrugData(drugDataCountDay);
 
 
@@ -375,9 +386,9 @@ public class HomePageReportServiceImpl implements HomePageReportService {
                         waterSupplyChart.setSort(waterSupplyData.getDay());
 
                         if (waterSupplyData.getParmType() == 3) { //供水
-                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
+                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(multipleData,3,BigDecimal.ROUND_HALF_UP));
                         } else if (waterSupplyData.getParmType() == 5) {//电耗
-                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(multipleData,3,BigDecimal.ROUND_HALF_UP));
                         } else if (waterSupplyData.getParmType() == 6) {//药耗
                             waterSupplyChart.setDrugData(waterSupplyData.getAmount());
                         }

+ 44 - 2
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -915,7 +915,6 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                     value.stream().forEach(waterSupplyData -> {
                         Period period = Period.between(LocalDate.of(waterSupplyData.getYear(), waterSupplyData.getMonth(), waterSupplyData.getDay()), LocalDate.now());
                         waterSupplyChart.setSort(period.getDays());
-
                         if (waterSupplyData.getParmType() == 3) { //供水
                             waterSupplyChart.setWaterData(waterSupplyData.getAmount());
                         } else if (waterSupplyData.getParmType() == 5) {//电耗
@@ -937,6 +936,49 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         return waterSupplyCharts;
     }
 
+    //水厂制水、药耗、电耗对比曲线
+    @Override
+    public List<WaterSupplyChart> waterSupplyChartsForCurrentMonth(String sceneTypeName,Long sceneId) {
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+        List<Long> sceneIds = sceneService.findByParentIdsLike(sceneId);
+        List<WaterSupplyData> waterSupplyDatas = monitorDataReportMapper.getWaterSupplyDataForCurrentMonth(tenantId, sceneTypeName, sceneIds, loginUser.getType(), loginUser.getPermissonType(), loginUser.getProgramItemList());
+        List<WaterSupplyChart> waterSupplyCharts = new ArrayList<>();
+        waterSupplyDatas.stream()
+                .collect(Collectors.groupingBy(item -> item.getYear() + "-" + item.getMonth() + "-" + item.getDay()))
+                .forEach((key, value) -> {
+                    WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
+                    waterSupplyChart.setDate(key);
+                    value.stream().forEach(waterSupplyData -> {
+                        Period period = Period.between(LocalDate.of(waterSupplyData.getYear(), waterSupplyData.getMonth(), waterSupplyData.getDay()), LocalDate.now());
+                        waterSupplyChart.setSort(period.getDays());
+                        if (waterSupplyData.getParmType() == 3) { //供水
+                            waterSupplyChart.setWaterData(waterSupplyData.getAmount());
+                        } else if (waterSupplyData.getParmType() == 5) {//电耗
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
+                        } else if (waterSupplyData.getParmType() == 6) {//药耗
+                            waterSupplyChart.setDrugData(waterSupplyData.getAmount());
+                        }
+                    });
+                    waterSupplyCharts.add(waterSupplyChart);
+                });
+        //插入当天数据
+        //获取当日水量
+        BigDecimal waterDataAmountCountMonth = getAmountCount(null,sceneId.intValue(), sceneTypeName, 3,1 );
+        //获取当日电耗
+        BigDecimal powerDataAmountCountMonth = getAmountCount(null,sceneId.intValue(), sceneTypeName, 5,1 );
+        WaterSupplyChart waterSupplyChart= new WaterSupplyChart();
+        waterSupplyChart.setDate(LocalDate.now().getYear()+"-"+LocalDate.now().getMonthValue()+"-"+LocalDate.now().getDayOfMonth());
+        waterSupplyChart.setWaterData(waterDataAmountCountMonth);
+        waterSupplyChart.setPowerData(powerDataAmountCountMonth);
+        waterSupplyCharts.add(waterSupplyChart);
+
+        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
+        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
+        return waterSupplyCharts;
+    }
+
     public ComUsageDto getYieldPowerUsage(Long companyOrgId) {
         ComUsageDto sceneUsageDto = new ComUsageDto();
         //查询公司下的场景
@@ -1032,7 +1074,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                         if (waterSupplyData.getParmType() == 3) { //供水
                             waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
                         } else if (waterSupplyData.getParmType() == 5) {//电耗
-                            waterSupplyChart.setPowerData(waterSupplyData.getAmount());
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
                         }
                     });
                     waterSupplyCharts.add(waterSupplyChart);

+ 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>
 

+ 51 - 1
sms_water/src/main/resources/mapper/MonitorDataReportMapper.xml

@@ -1317,7 +1317,57 @@
                 and (s.DEPT_ORG_ID is null or s.DEPT_ORG_ID =0)
             </if>
         </if>
-
+        group by r.year,r.month,r.day,dp.PARM_TYPE,da.UNIT
+    </select>
+    <select id="getWaterSupplyDataForCurrentMonth" resultType="com.huaxu.dto.generalView.WaterSupplyData">
+        select
+        r.year
+        ,r.month
+        ,r.day
+        ,dp.PARM_TYPE as "parmType"
+        ,sum(r.SUM_VALUE) as "amount"
+        ,da.UNIT as "unit"
+        from sms_scene_type st
+        left join sms_scene s on s.SCENE_TYPE_ID =st.id
+        left join sms_device_parm dp on s.id=dp.PARENT_SCENE_ID
+        left join sms_device_attribute da on dp.ATTRIBUTE_ID =da.ID
+        left join sms_month_report r on r.DEVICE_ID =dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+        where  dp.`STATUS`=1 and st.SCENE_TYPE_NAME = #{sceneTypeName} and s.ENABLE_STATE = 1
+        and DATE_FORMAT(NOW(), '%Y%m') = DATE_FORMAT(r.COLLECT_DATE, '%Y%m')
+        and dp.PARM_TYPE in (3,5,6)   and dp.TENANT_ID=#{tenantId}
+        <if test="sceneIds!=null and sceneIds.size() > 0">
+            and  s.id in
+            <foreach collection="sceneIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        <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>
         group by r.year,r.month,r.day,dp.PARM_TYPE,da.UNIT
     </select>
 

+ 82 - 38
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -317,47 +317,91 @@
     </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>
-                    )
+        select a.sceneTypeName,amount,newAmount from
+        (
+            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="scene.tenantId != null  and scene.tenantId != ''">
+                    and a.tenant_id = #{scene.tenantId}
                 </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 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>
-                <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)
+                and SCENE_TYPE_NAME in('水源','水厂','泵站')
+            </where>
+            group by b.SCENE_TYPE_NAME
+        ) a left join
+        (
+            select count(a.ID) newAmount,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>
-            and SCENE_TYPE_NAME in('水源','水厂','泵站')
-        </where>
-        group by b.SCENE_TYPE_NAME;
+                <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
+        ) b
+        on a.sceneTypeName = b.sceneTypeName
     </select>
 
 

+ 10 - 0
user_center/src/main/java/com/huaxu/controller/UserController.java

@@ -271,6 +271,16 @@ public class UserController {
         List<UserListDto> userList = userService.findUserList(type);
         return new AjaxMessage<>(ResultStatus.OK,userList);
     }
+
+    /**
+     * 查询运维人员信息
+     * @return
+     */
+    @RequestMapping(value = "/findUserListByType", method = RequestMethod.GET)
+    public AjaxMessage<List<UserEntity>> findUserListByType() {
+        List<UserEntity> userList = userService.findUserListBytype(3);
+        return new AjaxMessage<>(ResultStatus.OK, userList);
+    }
     @RequestMapping(value = "/findUserIdsByUserIds", method = RequestMethod.POST)
     public List<UserEntity> findUserIdsByUserIds(Long[] ids) {
         List list = Arrays.asList(ids.clone());

+ 2 - 0
user_center/src/main/java/com/huaxu/dao/UserMapper.java

@@ -38,6 +38,8 @@ public interface UserMapper extends BaseMapper<UserEntity> {
 
     List<UserEntity> findUserList(@Param("user")UserEntity userEntity);
 
+    List<UserEntity> findUserListByType(@Param("user")UserEntity userEntity);
+
     List<UserEntity> findUserIdsForOrg(@Param("compayId")Integer compayId, @Param("deptId")Integer deptId,@Param("ids")List<Long> ids,@Param("compids")List<Long> comIds);
 
 

+ 13 - 0
user_center/src/main/java/com/huaxu/service/UserService.java

@@ -425,4 +425,17 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 		}
 		return userIds;
 	}
+
+	public List<UserEntity> findUserListBytype(int type) {
+		List<UserListDto> userListDtos = new ArrayList<>();
+		LoginUser currentUser = UserUtil.getCurrentUser();
+		UserEntity userEntity = new UserEntity();
+		userEntity.setTenantId(currentUser.getTenantId());
+		userEntity.setProgramItems(currentUser.getProgramItemList());
+		userEntity.setUserType(String.valueOf(type));
+		//1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+		userEntity.setPermissonType(currentUser.getPermissonType());
+		List<UserEntity> userEntities = userMapper.findUserListByType(userEntity);
+		return userEntities;
+	}
 }

+ 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=",">

+ 45 - 0
user_center/src/main/resources/mapper/UserMapper.xml

@@ -203,6 +203,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </if>
             </where>
 
+    </select>
+    <select id="findUserListByType" resultType="com.huaxu.entity.UserEntity">
+        select a.id,a.DEPT_ORG_ID,a.COMPANY_ORG_ID,
+        a.USERNAME,company.ORG_NAME
+        companyOrgName,department.ORG_NAME deptOrgName from uims_user a
+        left join uims_org company on a.COMPANY_ORG_ID=company.ID
+        left join uims_org  department on a.DEPT_ORG_ID=department.ID
+        <where>
+            a.status=1 and a.user_type = #{user.userType}
+            <if test="user.tenantId != null  and user.tenantId != ''"> and a.tenant_id = #{user.tenantId} </if>
+
+            <if test="user.deptOrgId != null  and user.deptOrgId != ''">
+                and (a.DEPT_ORG_ID = #{user.deptOrgId}
+                or a.COMPANY_ORG_ID = #{user.companyOrgId}
+                )
+            </if>
+            <if test="user.userType!=null and user.userType!=-999 and user.userType!=-9999 and  user.programItems != null and user.programItems.size() > 0">
+                <if test="user.permissonType == 5 or user.permissonType == 2">
+                    and ( a.DEPT_ORG_ID in
+                    <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    or
+                    a.COMPANY_ORG_ID in
+                    <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    )
+                </if>
+                <if test="user.permissonType == 4 or user.permissonType == 3">
+                    and a.DEPT_ORG_ID in
+                    <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                </if>
+                <if test="user.permissonType == 1">
+                    and a.COMPANY_ORG_ID in
+                    <foreach collection="user.programItems" item="item" open="(" close=")" separator=",">
+                        #{item.orgId}
+                    </foreach>
+                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                </if>
+            </if>
+        </where>
+
     </select>
     <select id="findUserIdsByUserIds"  resultType="com.huaxu.entity.UserEntity">
         SELECT