Преглед на файлове

App总览-生产数据-环比

wangbo преди 4 години
родител
ревизия
5375fd5930

+ 22 - 0
sms_water/src/main/java/com/huaxu/controller/AppPageReportController.java

@@ -95,6 +95,24 @@ public class AppPageReportController {
         return new AjaxMessage<>(ResultStatus.OK,map);
     }
 
+    @RequestMapping(value = "getWaterIntakeComparison",method = RequestMethod.GET)
+    @ApiOperation(value = "App总览——生产数据-取水环比(本月)")
+    public AjaxMessage<Object> getWaterIntakeComparison(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){
+
+        LocalDate localDate = LocalDate.now();
+        LocalDate lastlocalDate = LocalDate.now();
+
+        List<DeviceWaterSupply> supplyWaterList = appPageReportService.deviceWaterReportForDay(companyOrgId,"水源",4,
+                localDate.getYear(),localDate.getMonthValue(),1,
+                localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth() );
+
+
+        return new AjaxMessage<>(ResultStatus.OK,supplyWaterList);
+    }
+
+
+
+
     /**
      * @Author wangbo
      * @Description 计算产销差
@@ -123,4 +141,8 @@ public class AppPageReportController {
         map.put("售水总量",sellerWaterAmount);
         map.put("产销差",nrw);
     }
+
+
+
+
 }

+ 12 - 0
sms_water/src/main/java/com/huaxu/dao/HomePageReportMapper.java

@@ -36,6 +36,18 @@ public interface HomePageReportMapper {
                                                       @Param("month")Integer month);
 
 
+    List<DeviceWaterSupply> deviceWaterReportForDay(@Param("companyOrgId")Integer companyOrgId,
+                                                 @Param("sceneType")String sceneType, @Param("parmType")Integer parmType,
+                                                 @Param("tenantId")String tenantId, @Param("userType")String userType,
+                                                 @Param("permissonType")Integer permissonType,
+                                                 @Param("programItems")List<ProgramItem> programItems,
+                                                 @Param("startYear")Integer startYear,
+                                                 @Param("startMonth")Integer startMonth,
+                                                 @Param("startDay")Integer startDay,
+                                                 @Param("endYear")Integer endYear,
+                                                 @Param("endMonth")Integer endMonth,
+                                                 @Param("endDay")Integer endDay);
+
     CompanyCount countSceneByType(@Param("companyOrgId")Integer companyOrgId,
                                         @Param("tenantId")String tenantId, @Param("userType")String userType,
                                         @Param("permissonType")Integer permissonType,

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

@@ -6,7 +6,14 @@ import java.util.List;
 
 public interface AppPageReportService {
 
-    List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId, String sceneType, Integer parmType, Integer month);
-
+    //App数据总览-生产数据-前N个月的售水量
     List<DeviceWaterSupply> deviceSellerWaterReportForMonth(Integer companyOrgId,Integer month);
+
+    //App数据总览-生产数据-前N个月的去取水量(水源:4)
+    //前N个月的去制水量(水厂:3)
+    List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId,String sceneType, Integer parmType,Integer month);
+
+    //App数据总览-生产数据-环比-查询时间段内的取水量供水量
+    List<DeviceWaterSupply> deviceWaterReportForDay(Integer companyOrgId, String sceneType, Integer parmType, Integer startYear, Integer startMonth, Integer startDay, Integer endYear, Integer endMonth, Integer endDay) ;
+
 }

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

@@ -7,6 +7,8 @@ import com.huaxu.dto.homePage.CompanyCount;
 import com.huaxu.dto.homePage.CompanyProduce;
 import com.huaxu.dto.homePage.WaterQualityRate;
 import com.huaxu.dto.homePage.WaterQualityRateForScene;
+import com.huaxu.model.ProgramItem;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -21,10 +23,6 @@ public interface HomePageReportService {
     //近6月制水量(水厂:3)
     List<DeviceWaterSupply> deviceWaterReportForSixMonth(Integer companyOrgId,String sceneType, Integer parmType);
 
-    //前N个月的去取水量(水源:4)
-    //前N个月的去制水量(水厂:3)
-    List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId,String sceneType, Integer parmType,Integer month);
-
     //公司投资统计(公司场景)
     CompanyCount countSceneByType(Integer companyOrgId);
 

+ 83 - 13
sms_water/src/main/java/com/huaxu/service/impl/AppPageReportServiceImpl.java

@@ -1,13 +1,20 @@
 package com.huaxu.service.impl;
 
+import com.huaxu.client.UserCenterClient;
+import com.huaxu.dao.HomePageReportMapper;
+import com.huaxu.dao.MonitorDataReportMapper;
 import com.huaxu.dto.MonthRevenueDto;
 import com.huaxu.dto.generalView.DeviceWaterSupply;
+import com.huaxu.model.LoginUser;
 import com.huaxu.service.AppPageReportService;
 import com.huaxu.service.HomePageReportService;
+import com.huaxu.service.MonitorDataReportService;
 import com.huaxu.service.RevenueService;
+import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
@@ -25,23 +32,14 @@ import java.util.List;
 public class AppPageReportServiceImpl implements AppPageReportService {
 
     @Autowired
-    private HomePageReportService homePageReportService;
+    private MonitorDataReportService monitorDataReportService;
 
     @Autowired
     private RevenueService revenueService;
 
-    /**
-     * App 总览 前N个月的取水量、制水量
-     * @param companyOrgId
-     * @param sceneType
-     * @param parmType
-     * @return
-     */
-    @Override
-    public List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId, String sceneType, Integer parmType, Integer month) {
-        List<DeviceWaterSupply> deviceWaterSupplies =  homePageReportService.deviceWaterReportForMonth(companyOrgId,sceneType,parmType,month);
-        return deviceWaterSupplies;
-    }
+    @Resource
+    private HomePageReportMapper homePageReportMapper;
+
 
     /**
      * App 总览 前N个月的售水量
@@ -74,6 +72,78 @@ public class AppPageReportServiceImpl implements AppPageReportService {
         return deviceWaterSupplies;
     }
 
+
+    /**
+     * App 总览 前N个月的取水量、制水量
+     * @param companyOrgId
+     * @param sceneType
+     * @param parmType
+     * @return
+     */
+    @Override
+    public List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId,String sceneType, Integer parmType,Integer month){
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+        LocalDate localDate = LocalDate.now();
+
+        List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getDeviceWaterForMonth(companyOrgId,sceneType,parmType ,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList(),month);
+
+        BigDecimal AmountCountMonth = monitorDataReportService.getAmountCount(companyOrgId,null, sceneType, parmType,2 );
+
+        DeviceWaterSupply deviceWaterSupplyMonth = new DeviceWaterSupply();
+        deviceWaterSupplyMonth.setOrderNo(1);
+        deviceWaterSupplyMonth.setAmount(AmountCountMonth!=null?AmountCountMonth.divide(new BigDecimal("10000")):BigDecimal.ZERO);
+        deviceWaterSupplyMonth.setYear(localDate.getYear());
+        deviceWaterSupplyMonth.setMonth(localDate.getMonthValue());
+        deviceWaterSupplyMonth.setDate(localDate);
+        deviceWaterSupplyMonth.setDateLabel(localDate.getYear()+"-"+localDate.getMonthValue());
+        deviceWaterSupplies.add(0, deviceWaterSupplyMonth);
+
+        for (int i = 1; i < month; i++) {
+            LocalDate newLocalDate = localDate.plusMonths(-i );
+            if (i == deviceWaterSupplies.size()
+                    || newLocalDate.getMonthValue() != deviceWaterSupplies.get(i).getMonth().intValue()
+                    || newLocalDate.getYear() != deviceWaterSupplies.get(i).getYear().intValue()) {
+
+                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
+                deviceWaterSupply.setOrderNo(i + 1);
+                deviceWaterSupply.setAmount(BigDecimal.ZERO);
+                deviceWaterSupply.setYear(newLocalDate.getYear());
+                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
+                deviceWaterSupply.setDate(newLocalDate);
+                deviceWaterSupply.setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
+                deviceWaterSupplies.add(i, deviceWaterSupply);
+            } else {
+                deviceWaterSupplies.get(i).setOrderNo(i + 1);
+                deviceWaterSupplies.get(i).setDate(newLocalDate);
+                deviceWaterSupplies.get(i).setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
+            }
+        }
+        deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
+
+        return deviceWaterSupplies;
+
+    }
+
+
+    @Override
+    public List<DeviceWaterSupply> deviceWaterReportForDay(Integer companyOrgId, String sceneType, Integer parmType, Integer startYear, Integer startMonth, Integer startDay, Integer endYear, Integer endMonth, Integer endDay) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        String tenantId = loginUser.getTenantId();
+        List<DeviceWaterSupply> deviceWaterSupplyList = homePageReportMapper.deviceWaterReportForDay(companyOrgId,
+                sceneType,parmType ,
+                tenantId,loginUser.getType(),
+                loginUser.getPermissonType(),
+                loginUser.getProgramItemList(),
+                startYear,
+                startMonth,
+                startDay,
+                endYear,
+                endMonth,
+                endDay);
+        return deviceWaterSupplyList;
+    }
+
     private MonthRevenueDto findRevenue(List<MonthRevenueDto> sellerWater,LocalDate localDate) {
         String dateString = String.format("%s-%s", localDate.getYear(),new DecimalFormat("#00").format(localDate.getMonthValue()));
         for (MonthRevenueDto revenue : sellerWater) {

+ 1 - 47
sms_water/src/main/java/com/huaxu/service/impl/HomePageReportServiceImpl.java

@@ -11,6 +11,7 @@ import com.huaxu.dto.homePage.WaterQualityRateForScene;
 import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.model.LoginUser;
+import com.huaxu.model.ProgramItem;
 import com.huaxu.service.HomePageReportService;
 import com.huaxu.service.MonitorDataReportService;
 import com.huaxu.util.UserUtil;
@@ -93,52 +94,6 @@ public class HomePageReportServiceImpl implements HomePageReportService {
         return deviceWaterSupplies;
     }
 
-    @Override
-    public List<DeviceWaterSupply> deviceWaterReportForMonth(Integer companyOrgId,String sceneType, Integer parmType,Integer month){
-        LoginUser loginUser = UserUtil.getCurrentUser();
-        String tenantId = loginUser.getTenantId();
-        LocalDate localDate = LocalDate.now();
-
-        List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getDeviceWaterForMonth(companyOrgId,sceneType,parmType ,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList(),month);
-
-        BigDecimal AmountCountMonth = monitorDataReportService.getAmountCount(companyOrgId,null, sceneType, parmType,2 );
-
-        DeviceWaterSupply deviceWaterSupplyMonth = new DeviceWaterSupply();
-        deviceWaterSupplyMonth.setOrderNo(1);
-        deviceWaterSupplyMonth.setAmount(AmountCountMonth!=null?AmountCountMonth.divide(new BigDecimal("10000")):BigDecimal.ZERO);
-        deviceWaterSupplyMonth.setYear(localDate.getYear());
-        deviceWaterSupplyMonth.setMonth(localDate.getMonthValue());
-        deviceWaterSupplyMonth.setDate(localDate);
-        deviceWaterSupplyMonth.setDateLabel(localDate.getYear()+"-"+localDate.getMonthValue());
-        deviceWaterSupplies.add(0, deviceWaterSupplyMonth);
-
-        for (int i = 1; i < month; i++) {
-            LocalDate newLocalDate = localDate.plusMonths(-i );
-            if (i == deviceWaterSupplies.size()
-                    || newLocalDate.getMonthValue() != deviceWaterSupplies.get(i).getMonth().intValue()
-                    || newLocalDate.getYear() != deviceWaterSupplies.get(i).getYear().intValue()) {
-
-                DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
-                deviceWaterSupply.setOrderNo(i + 1);
-                deviceWaterSupply.setAmount(BigDecimal.ZERO);
-                deviceWaterSupply.setYear(newLocalDate.getYear());
-                deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
-                deviceWaterSupply.setDate(newLocalDate);
-                deviceWaterSupply.setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
-                deviceWaterSupplies.add(i, deviceWaterSupply);
-            } else {
-                deviceWaterSupplies.get(i).setOrderNo(i + 1);
-                deviceWaterSupplies.get(i).setDate(newLocalDate);
-                deviceWaterSupplies.get(i).setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
-            }
-        }
-        deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
-
-        return deviceWaterSupplies;
-
-    }
-
-
     @Override
     public CompanyCount countSceneByType(Integer companyOrgId) {
         LoginUser loginUser = UserUtil.getCurrentUser();
@@ -444,5 +399,4 @@ public class HomePageReportServiceImpl implements HomePageReportService {
 //        waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
         return waterSupplyCharts;
     }
-
 }

+ 95 - 47
sms_water/src/main/resources/mapper/HomePageReportMapper.xml

@@ -48,53 +48,6 @@
         order by r.year desc,r.month desc
     </select>
 
-
-    <select id="getDeviceWaterForMonth" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
-        select
-        r.year,r.month,
-        sum(r.SUM_VALUE)/10000 as "amount"
-        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_year_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
-
-        where  dp.`STATUS`=1  and s.ENABLE_STATE = 1 and dp.TENANT_ID=#{tenantId}
-        <if test="companyOrgId != null">
-            and s.COMPANY_ORG_ID = #{companyOrgId}
-        </if>
-        and dp.PARM_TYPE = #{parmType} and st.SCENE_TYPE_NAME = #{sceneType}
-        and r.year*12 + r.month >=  year(CURDATE())*12 + month(CURDATE()) + 1 - #{month}
-        <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
-        order by r.year desc,r.month desc
-    </select>
-
     <select id="countSceneByType" resultType="com.huaxu.dto.homePage.CompanyCount">
 
         select
@@ -471,5 +424,100 @@
         group by r.year,r.month,r.day,dp.PARM_TYPE,da.UNIT
     </select>
 
+    <!--查询前N个月的取水量供水量-->
+    <select id="getDeviceWaterForMonth" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
+        select
+        r.year,r.month,
+        sum(r.SUM_VALUE)/10000 as "amount"
+        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_year_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+
+        where  dp.`STATUS`=1  and s.ENABLE_STATE = 1 and dp.TENANT_ID=#{tenantId}
+        <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
+        and dp.PARM_TYPE = #{parmType} and st.SCENE_TYPE_NAME = #{sceneType}
+        and r.year*12 + r.month >=  year(CURDATE())*12 + month(CURDATE()) + 1 - #{month}
+        <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
+        order by r.year desc,r.month desc
+    </select>
+
+
+    <!--查询时间段内的取水量供水量(精确到天)-->
+    <select id="getDeviceWaterForDay" resultType="com.huaxu.dto.generalView.DeviceWaterSupply">
+        select
+        r.year,r.month,r.day,
+        sum(r.SUM_VALUE)/10000 as "amount"
+        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_month_report r on r.DEVICE_ID= dp.DEVICE_ID and r.ATTRIBUTE_ID = dp.ATTRIBUTE_ID
+        where  dp.`STATUS`=1  and s.ENABLE_STATE = 1 and dp.TENANT_ID=#{tenantId}
+        <if test="companyOrgId != null">
+            and s.COMPANY_ORG_ID = #{companyOrgId}
+        </if>
+        and dp.PARM_TYPE = #{parmType} and st.SCENE_TYPE_NAME = #{sceneType}
+        and r.year &gt;= #{startYear} and r.month &gt;= #{startMonth} and r.day &gt;= #{startDay}
+        and r.year &lt;= #{endYear} and r.moth &lt;= #{endMonth} and r.day &lt;= #{endDay}
+        <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
+        order by r.year desc,r.month desc,r.day desc
+    </select>
+
 
 </mapper>