Explorar o código

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

wangli %!s(int64=4) %!d(string=hai) anos
pai
achega
5349292b3b

+ 12 - 0
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;
@@ -32,6 +33,8 @@ public class AppDataController {
     private AppDataService appDataService;
     @Autowired
     private SceneService sceneService;
+    @Autowired
+    private MonitorDataReportService monitorDataReportService;
 
     @RequestMapping(value = "getProductionDataForSameMonth", method = RequestMethod.GET)
     @ApiOperation(value = "综合调度——本月供水情况")
@@ -59,5 +62,14 @@ public class AppDataController {
         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);
+    }
 
 }

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

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

+ 43 - 0
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -936,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();
         //查询公司下的场景

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

@@ -1319,6 +1319,57 @@
         </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>
 
     <select id="getWaterSupplyDataByMonth" resultType="com.huaxu.dto.generalView.WaterSupplyData">
         select