BusOrgDaoImpl.java 33 KB

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