Browse Source

修改年初始化多水表问题

luobo 4 years ago
parent
commit
58f34b1219

+ 2 - 1
src/java/com/bus/dao/impl/BusOrgDaoImpl.java

@@ -67,7 +67,8 @@ public class BusOrgDaoImpl extends GenericDaoImpl<BusOrg, Long>
 		//Float v = (float) (1+GR/100);
 		//通过sql查询增长比例
 		String v = " (select 1+(growth_ratio/100) from base_org_type o where o.org_type_id = b.org_type_id) ";
-		String yearSql = "ROUND((ROUND(SUM(bm.`water`)/count(bm.`water`)) * 12 * "+v+")";
+		String s = " (select count(1) from bus_customer_meter c where c.`org_id` = b.`org_id` and c.`year` = b.`year`) ";
+		String yearSql = "ROUND((ROUND(SUM(bm.`water`)/count(bm.`water`)) * 12 * "+s+" * "+v+")";
 		String quarterSql = "ROUND("+yearSql+"/4)";
 		String montherSql = "ROUND("+yearSql+"/12)";
 		String sql = " INSERT INTO `bus_annual_plan_for_water`                                                           "

+ 2 - 0
src/java/com/bus/service/IBusCustomerMeterService.java

@@ -15,6 +15,8 @@ public interface IBusCustomerMeterService extends IGenericService<BusCustomerMet
 			String userType,String[] meterIds);
 	
 	int countCustomerMeter(Integer customerNumber,Integer orgNumber);
+
+	Integer countCustomerMeter(String year,Long orgId);
 	
 	/**
 	 * 批量变更水表

+ 8 - 0
src/java/com/bus/service/impl/BusCustomerMeterServiceImpl.java

@@ -81,6 +81,14 @@ public class BusCustomerMeterServiceImpl extends GenericServiceImpl<BusCustomerM
 	}
 
 	@Override
+	public Integer countCustomerMeter(String year, Long orgId) {
+		//select count(1) from bus_customer_meter c where c.`org_id` = b.`org_id` and c.`year` = b.`year`
+		return jdbcTemplate.queryForInt(
+				"select count(1) from bus_customer_meter c where c.`org_id` =? and c.`year` = ? ",
+				orgId,year);
+	}
+
+	@Override
 	public void updateCustomerMeter(Long sourceOrgId, Long targetOrgId,String meterNumbers) {
 		jdbcTemplate.update("UPDATE `bus_customer_meter` SET `org_id`=? WHERE `org_id`=? AND `meter_Number` IN ("+meterNumbers+")",targetOrgId,sourceOrgId);
 		jdbcTemplate.update("UPDATE `bus_meter_read_info` SET `org_id`=?,`org_number`=(SELECT `org_number` FROM `bus_org` WHERE `org_id`=?) WHERE `org_id`=? AND `meter_Number` IN ("+meterNumbers+")",

+ 11 - 4
src/java/com/bus/web/BusInitController.java

@@ -292,7 +292,7 @@ public class BusInitController extends BaseController {
                     if (water != null) {
                         continue;
                     }
-                    doDataInit(orgNumber, orgId, f.parse(startTime), f.parse(endTime));
+                    doDataInit(orgNumber, orgId,year, f.parse(startTime), f.parse(endTime));
                 }
             }
             busQuarterlyAssessmentService.updateWaterPrice(param);
@@ -344,7 +344,7 @@ public class BusInitController extends BaseController {
      * @param startTime
      * @param endTime
      */
-    private void doDataInit(int orgNumber, Long orgId, Date startTime, Date endTime) {
+    private void doDataInit(int orgNumber, Long orgId,String year, Date startTime, Date endTime) {
 
         //客户提出在年初始化的时候不再判断首月跟尾月是否有水,李周芳	2015-03-26
         // 不够12个月不做初值化,只判断首月跟尾月
@@ -362,6 +362,13 @@ public class BusInitController extends BaseController {
         //取增长比例
         Float GR = baseOrgTypeService.getGrowthRatio(borg1.getBaseOrgTypeId());
 
+        //找出水表数
+        //
+       Integer countMeter = busCustomerMeterService.countCustomerMeter(year,orgId);
+        if (countMeter == null || countMeter <= 0){
+            countMeter = 1;
+        }
+
         // 找到12个月区间总水量
         List<BusMeterReadInfo> listM = busMeterReadInfoService.getStartOneMonthMeterInfo(orgNumber, startTime, endTime);
         Float w = 0f;
@@ -372,8 +379,8 @@ public class BusInitController extends BaseController {
 
         //先算出上年月平均水量
         Integer averageMonthWater = Math.round(w /listM.size());
-        //年计划 = 上年度月均用水量×12×增长比例
-        Integer  yearPlan= Math.round(averageMonthWater * 12 * GR);
+        //年计划 = 上年度月均用水量×12×增长比例 * 水表数
+        Integer  yearPlan= Math.round(averageMonthWater * 12 * GR * countMeter);
         //季度用水量
         Integer quarterPlan = Math.round(yearPlan/4);
         //月计划用水指标