BusOrgDaoImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. package com.bus.dao.impl;
  2. import java.io.UnsupportedEncodingException;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.List;
  8. import org.hibernate.SessionFactory;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.jdbc.core.RowMapper;
  11. import com.bus.dao.IBusOrgDao;
  12. import com.bus.model.BusOrg;
  13. import com.bus.model.temp.BusOrgTemp;
  14. import com.core.dao.impl.GenericDaoImpl;
  15. /**
  16. * 数据导入文件持久层接口类
  17. *
  18. * @author lha
  19. *
  20. */
  21. public class BusOrgDaoImpl extends GenericDaoImpl<BusOrg, Long>
  22. implements IBusOrgDao {
  23. @Autowired
  24. private SessionFactory sessionFactory;
  25. @Autowired
  26. private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;
  27. @Override
  28. public String getMatYearFromBusOrg() {
  29. String hql = "select max(b.year) from BusOrg b where b.importStatus='normal' and b.isPlanUser='yes'";
  30. String year = (String)sessionFactory.getCurrentSession().createQuery(hql).uniqueResult();
  31. if(null == year){
  32. SimpleDateFormat f = new SimpleDateFormat("yyyy");
  33. Date d = new Date();
  34. year= f.format(d);
  35. }
  36. return year;
  37. }
  38. /* @Override
  39. public List<BusOrgTemp> getCountInitDate(String year) {
  40. String sql = "SELECT b.`org_id`,b.`year`,b.org_number FROM `bus_org` AS b WHERE b.`import_status`='normal' AND b.`year`='"+year+"' and b.is_reply='no'";
  41. RowMapper<BusOrgTemp> rowMapper = new RowMapper<BusOrgTemp>(){
  42. @Override
  43. public BusOrgTemp mapRow(ResultSet rs, int arg1)
  44. throws SQLException {
  45. BusOrgTemp busOrgTemp= new BusOrgTemp(rs.getLong("org_id"), rs.getString("year"), rs.getInt("org_number"));
  46. return busOrgTemp;
  47. }
  48. };
  49. List<BusOrgTemp> list = jdbcTemplate.query(sql, rowMapper);
  50. String sql = "SELECT count(*) FROM `bus_org` AS b WHERE b.`import_status`='normal' AND b.`year`=? and b.is_reply='no'";
  51. Long count = super.getCountBySql(sql, year);
  52. return list;
  53. }*/
  54. @Override
  55. public void updateCountYearInitDate(Long userId,Date updateTime,String userName,String year,Date initStartTime,Date initEndTime,
  56. Date bMonthStartTime,Date bMonthEndTime,Date eMonthStartTime,Date eMonthEndTime) {
  57. //先将int值转为float否则会发生精度丢失
  58. //Float v = (float) (1+GR/100);
  59. //通过sql查询增长比例
  60. String v = " (select 1+(growth_ratio/100) from base_org_type o where o.org_type_id = b.org_type_id) ";
  61. String s = " (select count(1) from bus_customer_meter c where c.`org_id` = b.`org_id` and c.`year` = b.`year`) ";
  62. String yearSql = "ROUND(SUM(bm.`water`)/count(bm.`water`) * 12 * "+s+" * "+v+")";
  63. String quarterSql = "ROUND("+yearSql+"/4)";
  64. String montherSql = "ROUND("+yearSql+"/12)";
  65. String sql = " INSERT INTO `bus_annual_plan_for_water` "
  66. + " ( "
  67. + " org_id,pri_year_usewater,plan_of_water,reply_of_water, "
  68. + " first_quarter_plan,first_quarter_reply,second_quarter_plan,second_quarter_reply, "
  69. + " third_quarter_plan,third_quarter_reply,fourth_quarter_plan,fourth_quarter_reply, "
  70. + " operator_id,fill_time,user_name,is_cancel, "
  71. + " jan_plan,feb_plan,mar_plan,apr_plan,may_plan,jun_plan,jul_plan,aug_plan,sept_plan,oct_plan,nov_plan,dec_plan, "
  72. + " jan_reply,feb_reply,mar_reply,apr_reply,may_reply,jun_reply,jul_reply,aug_reply,sept_reply,oct_reply,nov_reply,dec_reply "
  73. + " ) "
  74. + " ( "
  75. + " SELECT b.`org_id`,SUM(bm.`water`),"+yearSql+", "+yearSql+", "
  76. + " "+quarterSql+", "+quarterSql+","+quarterSql+","+quarterSql+", "
  77. + " "+quarterSql+", "+quarterSql+","+quarterSql+","+quarterSql+", "
  78. + " ?,?,?,'yes', "
  79. + " "+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","
  80. + " "+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","
  81. + " "+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","
  82. + " "+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql+","+montherSql
  83. + " FROM `bus_org` b JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number` "
  84. + " WHERE b.`is_plan_user`='yes' AND b.`import_status`='normal' AND b.`year`=? AND bm.`price_month`>=? AND bm.`price_month`<? "
  85. + " AND NOT EXISTS "
  86. + " ( "
  87. + " SELECT w.`org_id` FROM `bus_annual_plan_for_water` w WHERE b.`org_id`=w.`org_id` "
  88. + " ) "
  89. // + " AND EXISTS "
  90. // + " ( "
  91. // + " SELECT bmr.`info_id` FROM `bus_meter_read_info` bmr WHERE b.`org_number`=bmr.`org_number` "
  92. // + " AND bmr.`import_status`='normal' AND bmr.`price_month`>=? AND bmr.`price_month`<? "
  93. // + " ) "
  94. // + " AND EXISTS "
  95. // + " ( "
  96. // + " SELECT bmri.`info_id` FROM `bus_meter_read_info` bmri WHERE b.`org_number`=bmri.`org_number` "
  97. // + " AND bmri.`import_status`='normal' AND bmri.`price_month`>=? AND bmri.`price_month`<? "
  98. // + " ) "
  99. + " GROUP BY b.`org_number` "
  100. + " )";
  101. System.out.println("sql======================================"+sql);
  102. //return;
  103. // jdbcTemplate.update(sql, userId,updateTime,userName,year,initStartTime,initEndTime,bMonthStartTime,bMonthEndTime,eMonthStartTime,eMonthEndTime);
  104. jdbcTemplate.update(sql, userId,updateTime,userName,year,initStartTime,initEndTime);
  105. }
  106. @Override
  107. public void updateYearneedInitDate(String initYear,Date initStartTime,Date initEndTime,
  108. Date bMonthStartTime,Date bMonthEndTime,Date eMonthStartTime,Date eMonthEndTime) {
  109. //初值化计划户
  110. int nextyear = Integer.parseInt(initYear)+1;
  111. //添加条件: AND bo.`import_status`='normal' 了必须取未删除的单位信息,
  112. //李周芳 2016-02-19
  113. //把所有上一年用户都初值化到今年来
  114. String sql1 =" INSERT INTO `bus_org` (org_name,org_number,address,is_plan_user,`year`,industry_number,`code`,email,bank,bank_account, "
  115. +" remark,org_type_id,`area`,phone,import_status,user_type,postal_address) "
  116. +" SELECT b.`org_name`,b.`org_number`,b.`address`,b.`is_plan_user`,?,b.`industry_number`,b.`code`, "
  117. +" b.`email`,b.`bank`,b.`bank_account`,b.`remark`,b.`org_type_id`,b.`area`,b.`phone`,b.`import_status`,b.`user_type`,b.`postal_address` "
  118. +" FROM `bus_org` b WHERE b.`year`=? AND b.`import_status`='normal' "
  119. +" AND NOT EXISTS ( "
  120. +" SELECT bo.`org_id` FROM `bus_org` bo WHERE bo.`org_number`=b.`org_number` AND bo.`year`=? AND bo.`import_status`='normal' "
  121. +" )";
  122. int a = jdbcTemplate.update(sql1, nextyear,initYear,nextyear);
  123. String sql2 ="UPDATE bus_org SET postal_address=address WHERE (postal_address ='' or postal_address is null) and year=?";
  124. int c = jdbcTemplate.update(sql2, nextyear);
  125. /* //把所有没有年度计划的计划户变为非计划户
  126. String sql3 =" UPDATE `bus_org` bu SET bu.`is_plan_user`='no' WHERE bu.`year`=? AND bu.`is_plan_user`='yes' AND bu.`import_status`='normal' "
  127. +" AND NOT EXISTS ( SELECT w.`org_id` FROM `bus_annual_plan_for_water` w WHERE bu.`org_id` = w.`org_id`) ";
  128. int b = jdbcTemplate.update(sql3, nextyear);*/
  129. /*//把初值化数据标记计划户
  130. String sql =" UPDATE `bus_org` bus SET bus.`is_plan_user`='yes' WHERE bus.year=? and exists "
  131. +" ( "
  132. +" SELECT te.org_id FROM "
  133. +" ( "
  134. +" SELECT b.`org_id`,b.year,b.`org_number`,SUM(bm.`water`) AS sumWater FROM bus_org b "
  135. +" JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number` "
  136. +" WHERE b.`year`=? AND b.`import_status`='normal' AND bm.`import_status`='normal' "
  137. +" AND (bm.`price_month`>= ? AND bm.`price_month`<?) "
  138. +" and not exists "
  139. +" ( "
  140. +" SELECT w.`org_id` FROM `bus_annual_plan_for_water` w WHERE b.`org_id`=w.`org_id` "
  141. +" ) "
  142. +" AND EXISTS "
  143. +" ( "
  144. +" SELECT bmr.`org_id` FROM `bus_meter_read_info` bmr WHERE bmr.`org_number`=b.`org_number` "
  145. +" AND (bmr.`price_month`>= ? AND bmr.`price_month`<? ) AND bmr.`import_status`='normal' "
  146. +" ) "
  147. +" AND EXISTS "
  148. +" ( "
  149. +" SELECT bmri.`org_id` FROM `bus_meter_read_info` bmri WHERE bmri.`org_number`=b.`org_number` "
  150. +" AND (bmri.`price_month`>= ? AND bmri.`price_month`<? ) AND bmri.`import_status`='normal' "
  151. +" ) "
  152. +" GROUP BY b.`org_number` HAVING sumWater>=? "
  153. +" ) as te where bus.org_number=te.org_number "
  154. +" )";
  155. int c = jdbcTemplate.update(sql, new Object[]{nextyear,initYear,initStartTime,initEndTime,bMonthStartTime,bMonthEndTime,eMonthStartTime,eMonthEndTime,checkWater}); */
  156. /*// 把水表号、客户号插入水表客户表
  157. String sql2 =" INSERT INTO `bus_customer_meter` (`year`,address,org_id,customer_Number,meter_Number) "
  158. +" SELECT ?,e.address,e.org_id,e.customer_Number,e.meter_Number FROM "
  159. +" (SELECT c.address,c.customer_Number,c.meter_Number,rg.`org_id` FROM "
  160. +" (SELECT a.address,a.customer_Number,a.meter_Number,bo.`org_number` FROM "
  161. +" (SELECT bm.`address`,bm.`org_id` AS oId,bm.`customer_Number`,bm.`meter_Number` FROM `bus_customer_meter` bm "
  162. +" WHERE bm.`org_id` IN "
  163. +" ( "
  164. +" SELECT b.`org_id` FROM `bus_org` b WHERE b.`org_number` IN "
  165. +" (SELECT o.`org_number` FROM `bus_org` o WHERE o.`year`=? AND o.`import_status`='normal') "
  166. +" AND b.`year`=? AND b.`import_status`='normal' "
  167. +" ) "
  168. +" ) a LEFT JOIN `bus_org` bo ON a.oId = bo.`org_id` "
  169. +" ) c "
  170. +" LEFT JOIN `bus_org` rg ON c.org_number= rg.org_number "
  171. +" WHERE rg.year=? AND rg.import_status='normal' "
  172. +" ) e "
  173. +" WHERE NOT EXISTS "
  174. +" ( "
  175. +" SELECT mcb.`meter_id` FROM `bus_customer_meter` mcb WHERE mcb.`year`=? "
  176. +" AND mcb.`org_id`=e.org_id AND mcb.`meter_Number`=e.meter_Number "
  177. +" )";
  178. int d = jdbcTemplate.update(sql2, nextyear,nextyear,initYear,nextyear,nextyear);*/
  179. }
  180. @Override
  181. public void updateInitbusQuarterlyAssessment(int assessmentQuarter,
  182. String year, Date initStartTime, Date initEndTime,
  183. Date bMonthStartTime, Date bMonthEndTime, Date eMonthStartTime,
  184. Date eMonthEndTime) {
  185. // Float v = (float) (1+GR/100);
  186. //通过sql查询增长比例
  187. String v = " (select 1+(growth_ratio/100) from base_org_type o where o.org_type_id = b.org_type_id) ";
  188. String s = " (select count(1) from bus_customer_meter c where c.`org_id` = b.`org_id` and c.`year` = b.`year`) ";
  189. String yearSql = "ROUND(SUM(bm.`water`)/count(bm.`water`) * 12 * "+s+" * "+v+")";
  190. String quarterSql = "ROUND("+yearSql+"/4)";
  191. String montherSql = "ROUND("+yearSql+"/12)";
  192. String sql =" INSERT INTO `bus_quarterly_assessment` "
  193. +" ( "
  194. +" assessment_quarter,water_planning_index,org_id, "
  195. +" is_write_off,bank,bank_account "
  196. +" ) "
  197. +" ( "
  198. +" SELECT ?,"+quarterSql+",b.`org_id`,'no',b.bank,b.bank_account FROM `bus_org` b "
  199. +" JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number` "
  200. +" WHERE b.`is_plan_user`='yes' AND b.`year`=? AND bm.`price_month`>=? AND bm.`price_month`<? "
  201. +" AND NOT EXISTS "
  202. +" ( "
  203. +" SELECT bqa.`assessment_id` FROM `bus_quarterly_assessment` bqa "
  204. +" WHERE bqa.`org_id`=b.`org_id` AND bqa.`assessment_quarter`=? "
  205. +" ) "
  206. // +" AND EXISTS "
  207. // +" ( "
  208. // +" SELECT bmr.`info_id` FROM `bus_meter_read_info` bmr WHERE b.`org_number`=bmr.`org_number` "
  209. // +" AND bmr.`import_status`='normal' AND bmr.`price_month`>=? AND bmr.`price_month`<? "
  210. // +" ) "
  211. // +" AND EXISTS "
  212. // +" ( "
  213. // +" SELECT bmri.`info_id` FROM `bus_meter_read_info` bmri WHERE b.`org_number`=bmri.`org_number` "
  214. // +" AND bmri.`import_status`='normal' AND bmri.`price_month`>=? AND bmri.`price_month`<? "
  215. // +" ) "
  216. +" GROUP BY b.`org_number` "
  217. +" ) ";
  218. jdbcTemplate.update(sql, assessmentQuarter,year,initStartTime,initEndTime,assessmentQuarter);
  219. //jdbcTemplate.update(sql, assessmentQuarter,year,initStartTime,initEndTime,assessmentQuarter,bMonthStartTime,bMonthEndTime,eMonthStartTime,eMonthEndTime);
  220. }
  221. @Override
  222. public void updateInitbusMonthAssessment(int assessmentMonth,
  223. String year, Date initStartTime, Date initEndTime,
  224. Date bMonthStartTime, Date bMonthEndTime, Date eMonthStartTime,
  225. Date eMonthEndTime) {
  226. //通过sql查询增长比例
  227. String v = " (select 1+(growth_ratio/100) from base_org_type o where o.org_type_id = b.org_type_id ) ";
  228. String s = " (select count(1) from bus_customer_meter c where c.`org_id` = b.`org_id` and c.`year` = b.`year`) ";
  229. String yearSql = "ROUND(SUM(bm.`water`)/count(bm.`water`) * 12 * "+s+" * "+v+")";
  230. String quarterSql = "ROUND("+yearSql+"/4)";
  231. String montherSql = "ROUND("+yearSql+"/12)";
  232. String sql =" INSERT INTO `bus_month_assessment` "
  233. +" ( "
  234. +" assessment_month,water_planning_index,org_id, "
  235. +" is_write_off,bank,bank_account "
  236. +" ) "
  237. +" ( "
  238. +" SELECT ?,"+montherSql+",b.`org_id`,'no',b.bank,b.bank_account FROM `bus_org` b "
  239. +" JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number` "
  240. +" WHERE b.`is_plan_user`='yes' AND b.`year`=? AND bm.`price_month`>=? AND bm.`price_month`<? "
  241. +" AND NOT EXISTS "
  242. +" ( "
  243. +" SELECT bqa.`assessment_mon_id` FROM `bus_month_assessment` bqa "
  244. +" WHERE bqa.`org_id`=b.`org_id` AND bqa.`assessment_month`=? "
  245. +" ) "
  246. // +" AND EXISTS "
  247. // +" ( "
  248. // +" SELECT bmr.`info_id` FROM `bus_meter_read_info` bmr WHERE b.`org_number`=bmr.`org_number` "
  249. // +" AND bmr.`import_status`='normal' AND bmr.`price_month`>=? AND bmr.`price_month`<? "
  250. // +" ) "
  251. // +" AND EXISTS "
  252. // +" ( "
  253. // +" SELECT bmri.`info_id` FROM `bus_meter_read_info` bmri WHERE b.`org_number`=bmri.`org_number` "
  254. // +" AND bmri.`import_status`='normal' AND bmri.`price_month`>=? AND bmri.`price_month`<? "
  255. // +" ) "
  256. +" GROUP BY b.`org_number` "
  257. +" ) ";
  258. jdbcTemplate.update(sql, assessmentMonth,year,initStartTime,initEndTime,assessmentMonth);
  259. }
  260. @Override
  261. public void updateInitbusHalfYearAssessment(int assessmentQuarter,
  262. String year,Date initStartTime,Date initEndTime,
  263. Date bMonthStartTime,Date bMonthEndTime,Date eMonthStartTime,
  264. Date eMonthEndTime,Float GR){
  265. }
  266. @Override
  267. public List<BusOrgTemp> getPlanYearCountData(String orgNumber,String orgName,String year,
  268. String busOrgCustomerNumber,String address,String orgTypeId,String userType) throws UnsupportedEncodingException {
  269. String sql = " SELECT b.`org_id`,b.`org_number`,b.`org_name`,b.org_type_id,(select org_name from base_org_type o where o.org_type_id = b.org_type_id) org_type_name,bw.`plan_of_water`,bw.`reply_of_water` "
  270. + " FROM `bus_org` b JOIN `bus_annual_plan_for_water` bw ON b.`org_id`=bw.`org_id` "
  271. + " WHERE b.`year`='"+year+"' AND bw.`is_cancel`='yes'";
  272. if(!orgNumber.equals("")){
  273. sql +=" and b.org_number="+orgNumber;
  274. }
  275. if(!orgName.equals("")){
  276. orgName = new String(orgName.getBytes("iso8859-1"),"UTF-8");
  277. sql +=" and b.org_name='"+orgName+"'";
  278. }
  279. if(orgTypeId!=null && !orgTypeId.equals("")){
  280. orgTypeId = new String(orgTypeId.getBytes("iso8859-1"),"UTF-8");
  281. sql +=" and b.org_type_id="+orgTypeId+"";
  282. }
  283. if(!busOrgCustomerNumber.equals("")){
  284. sql +=" and b.org_id in (SELECT bcm.`org_id` FROM `bus_customer_meter` bcm WHERE bcm.`customer_Number`="+busOrgCustomerNumber+")";
  285. }
  286. if(!address.equals("")){
  287. address = new String(address.getBytes("iso8859-1"),"UTF-8");
  288. sql +=" and b.address='"+address+"'";
  289. }
  290. if(!userType.equals("")){
  291. sql +=" and b.user_type ="+userType;
  292. }
  293. RowMapper<BusOrgTemp> rowMapper = new RowMapper<BusOrgTemp>() {
  294. @Override
  295. public BusOrgTemp mapRow(ResultSet rs, int arg1)
  296. throws SQLException {
  297. BusOrgTemp usOrgTemp = new BusOrgTemp(rs.getLong("org_id"),rs.getInt("org_number"),
  298. rs.getString("org_name"),rs.getLong("org_type_id"),rs.getString("org_type_name"),rs.getFloat("plan_of_water"),rs.getFloat("reply_of_water"));
  299. return usOrgTemp;
  300. }
  301. };
  302. List<BusOrgTemp> list = jdbcTemplate.query(sql, rowMapper);
  303. return list;
  304. }
  305. @Override
  306. public String getMaxUserPlanYear() {
  307. String hql = "select max(b.year) from BusOrg b where b.importStatus='normal' and b.isPlanUser='no'";
  308. String year = (String)sessionFactory.getCurrentSession().createQuery(hql).uniqueResult();
  309. if(null == year){
  310. SimpleDateFormat f = new SimpleDateFormat("yyyy");
  311. Date d = new Date();
  312. year= f.format(d);
  313. }
  314. return year;
  315. }
  316. @Override
  317. public void initOneData(Long orgId,int nextYear,String type) {
  318. String sql =" INSERT INTO `bus_org` (org_name,org_number,address,is_plan_user,`year`,industry_number,`code`,email,bank,bank_account,"
  319. +" remark,org_type_id,`area`,phone,import_status,user_type,postal_address) "
  320. +" SELECT bus.`org_name`,bus.`org_number`,bus.`address`,?,?,bus.`industry_number`,bus.`code`,bus.`email`,bus.`bank`, "
  321. +" bus.`bank_account`,bus.`remark`,bus.`org_type_id`,bus.`area`,bus.`phone`,bus.`import_status`,bus.`user_type`,bus.`postal_address` "
  322. +" FROM `bus_org` bus WHERE bus.`org_id`=?";
  323. jdbcTemplate.update(sql,type,nextYear,orgId);
  324. //客户水表要初值化
  325. String sql2=" INSERT INTO `bus_customer_meter` (`year`,address,org_id,customer_Number,meter_Number) "
  326. +" (SELECT ?,t.address,o.`org_id`,t.customer_Number,t.meter_Number FROM `bus_org` o RIGHT JOIN ( "
  327. +" SELECT b.`org_number`,bm.`address`,bm.`customer_Number`,bm.`meter_Number` FROM `bus_org` b "
  328. +" RIGHT JOIN `bus_customer_meter` bm ON b.`org_id`=bm.`org_id` WHERE bm.`org_id`=?) AS t "
  329. +" ON o.`org_number` = t.org_number WHERE o.year=? )";
  330. jdbcTemplate.update(sql2,nextYear,orgId,nextYear);
  331. }
  332. @Override
  333. public void updateIsplanYear(String year) {
  334. int nextyear = Integer.parseInt(year)+1;
  335. //把所有没有年度计划的计划户变为非计划户
  336. String sql3 =" UPDATE `bus_org` bu SET bu.`is_plan_user`='no' WHERE bu.`year`=? AND bu.`is_plan_user`='yes' AND bu.`import_status`='normal' "
  337. +" AND NOT EXISTS ( SELECT w.`org_id` FROM `bus_annual_plan_for_water` w WHERE bu.`org_id` = w.`org_id`) ";
  338. jdbcTemplate.update(sql3, nextyear);
  339. }
  340. @Override
  341. public void updateSetplanYear(String initYear, Date initStartTime,
  342. Date initEndTime, Date bMonthStartTime, Date bMonthEndTime,
  343. Date eMonthStartTime, Date eMonthEndTime, Float checkWater) {
  344. int nextyear = Integer.parseInt(initYear)+1;
  345. //把初值化数据标记计划户
  346. //去掉年头年尾必须有水量的要求
  347. String sql =" UPDATE `bus_org` bus SET bus.`is_plan_user`='yes' WHERE bus.year=? AND EXISTS ("
  348. +" SELECT te.org_id FROM (SELECT b.`org_id`,b.year,b.`org_number`,SUM(bm.`water`) AS sumWater FROM bus_org b"
  349. +" JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number`"
  350. +" WHERE b.`year`=? AND b.`import_status`='normal' AND bm.`import_status`='normal'"
  351. +" AND (bm.`price_month`>= ? AND bm.`price_month`<?)"
  352. // +" AND EXISTS"
  353. // +" ("
  354. // +" SELECT bmr.`org_id` FROM `bus_meter_read_info` bmr WHERE bmr.`org_number`=b.`org_number`"
  355. // +" AND (bmr.`price_month`>= ? AND bmr.`price_month`<? ) AND bmr.`import_status`='normal'"
  356. // +" ) "
  357. // +" AND EXISTS "
  358. // +" ("
  359. // +" SELECT bmri.`org_id` FROM `bus_meter_read_info` bmri WHERE bmri.`org_number`=b.`org_number`"
  360. // +" AND (bmri.`price_month`>= ? AND bmri.`price_month`<? ) AND bmri.`import_status`='normal'"
  361. // +" )"
  362. +" GROUP BY b.`org_number` HAVING sumWater>=?) te WHERE bus.`org_number`=te.org_number)";
  363. jdbcTemplate.update(sql,nextyear,initYear,initStartTime,initEndTime,checkWater);
  364. //月平均用水量超过1000吨的也算
  365. String sql1 =" UPDATE `bus_org` bus SET bus.`is_plan_user`='yes' WHERE bus.year=? AND EXISTS ("
  366. +" SELECT te.org_id FROM (SELECT b.`org_id`,b.year,b.`org_number`,SUM(bm.`water`) AS sumWater,COUNT(meter_Number) countMeter FROM bus_org b"
  367. +" JOIN `bus_meter_read_info` bm ON b.`org_number`=bm.`org_number`"
  368. +" WHERE b.`year`=? AND b.`import_status`='normal' AND bm.`import_status`='normal'"
  369. +" AND (bm.`price_month`>= ? AND bm.`price_month`<?)"
  370. +" GROUP BY b.`org_number` HAVING sumWater/countMeter>=1000) te WHERE bus.`org_number`=te.org_number)";
  371. jdbcTemplate.update(sql1,nextyear,initYear,initStartTime,initEndTime);
  372. }
  373. @Override
  374. public void updateCosMeter(String initYear) {
  375. int nextyear = Integer.parseInt(initYear)+1;
  376. // 把水表号、客户号插入水表客户表
  377. String sql2 =" INSERT INTO `bus_customer_meter` (`year`,address,org_id,customer_Number,meter_Number) "
  378. +" SELECT ?,e.address,e.org_id,e.customer_Number,e.meter_Number FROM "
  379. +" (SELECT c.address,c.customer_Number,c.meter_Number,rg.`org_id` FROM "
  380. +" (SELECT a.address,a.customer_Number,a.meter_Number,bo.`org_number` FROM "
  381. +" (SELECT bm.`address`,bm.`org_id` AS oId,bm.`customer_Number`,bm.`meter_Number` FROM `bus_customer_meter` bm "
  382. +" WHERE bm.`org_id` IN "
  383. +" ( "
  384. +" SELECT b.`org_id` FROM `bus_org` b WHERE b.`org_number` IN "
  385. +" (SELECT o.`org_number` FROM `bus_org` o WHERE o.`year`=? AND o.`import_status`='normal') "
  386. +" AND b.`year`=? AND b.`import_status`='normal' "
  387. +" ) "
  388. +" ) a LEFT JOIN `bus_org` bo ON a.oId = bo.`org_id` "
  389. +" ) c "
  390. +" LEFT JOIN `bus_org` rg ON c.org_number= rg.org_number "
  391. +" WHERE rg.year=? AND rg.import_status='normal' "
  392. +" ) e "
  393. +" WHERE NOT EXISTS "
  394. +" ( "
  395. +" SELECT mcb.`meter_id` FROM `bus_customer_meter` mcb WHERE mcb.`year`=? "
  396. +" AND mcb.`org_id`=e.org_id AND mcb.`meter_Number`=e.meter_Number "
  397. +" )";
  398. int d = jdbcTemplate.update(sql2, nextyear,nextyear,initYear,nextyear,nextyear);
  399. }
  400. }