package com.data.dao.impl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import com.core.util.DateUtil; import org.apache.commons.lang.StringUtils; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.StatelessSession; import org.hibernate.Transaction; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.base.model.BaseWaterProperties; import com.base.service.IBaseWaterPropertiesService; import com.bus.model.BusMeterReadInfo; import com.bus.model.enumType.OrgImportStatus; import com.bus.service.IBusCustomerMeterService; import com.bus.service.IBusOrgService; import com.core.dao.impl.GenericDaoImpl; import com.core.util.DBUtils; import com.core.web.security.ContextUtil; import com.data.dao.IImportDataFileDao; import com.data.model.ImportDataFile; import com.data.model.enumType.ImportStatus; import com.data.service.IImportDataFileService; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; /** * 数据导入文件持久层接口类 * * @author lha * */ public class ImportDataFileDaoImpl extends GenericDaoImpl<ImportDataFile, Long> implements IImportDataFileDao { Logger log = LoggerFactory.getLogger(ImportDataFileDaoImpl.class); @Autowired private org.springframework.jdbc.core.JdbcTemplate jdbcTemplate; @Autowired protected org.hibernate.SessionFactory sessionFactory; @Autowired private IBusOrgService busOrgService; @Autowired private IBaseWaterPropertiesService baseWaterPropertiesService; @Autowired private IBusCustomerMeterService busCustomerMeter; @Autowired private IImportDataFileService importDataFileService; private int value = 5000; enum CheckType{ customerNumber, meterNumber } public void insertOracleData(String year,ImportDataFile importDataFile,String tablename) { StatelessSession session = sessionFactory.openStatelessSession(); Transaction tx = session.beginTransaction(); try { SyncOracleData(year,importDataFile,tablename); SQLQuery query = session.createSQLQuery("{CALL bus_org_procedure(?,?)}"); query.setString(0, year); query.setLong(1, importDataFile.getImportId()); List list = query.list(); tx.commit(); session.close(); importDataFile.setDataStatus(ImportStatus.complete.name()); importDataFile.setStatusDescription("同步oracle单位信息成功!"); importDataFileService.update(importDataFile); } catch (Exception e) { StringBuffer bs = new StringBuffer(); bs.append("\n 失败原因: " + e.fillInStackTrace() + ""); importDataFile.setDataStatus(ImportStatus.fail.name()); importDataFile.setStatusDescription(bs.toString()); importDataFileService.update(importDataFile); e.printStackTrace(); tx.rollback(); } } private void SyncOracleData(String year,ImportDataFile importDataFile,String tablename) throws Exception{ Statement stmt = null; ResultSet rs = null; String strsql =""; Connection mysqlconn = null; Connection oracleconn = null; Statement sm = null; try { mysqlconn = DBUtils.getMysqlConn(); sm = mysqlconn.createStatement(); oracleconn = DBUtils.getOracleConn(); stmt = (Statement) oracleconn.createStatement(); //rs = stmt.executeQuery("SELECT COUNT(*) as count FROM "+tablename); //查询数据总数 // int count = 0; // //// while (rs.next()) //// { //// count = rs.getInt("count"); //// } // int last = count % value; // int sum = (count - last) / value; // int numUp = value; // int numQuery = value; // for (int j = 0; j < sum + 1; j++) // { // if (j == sum) // { // numQuery = last; // numUp += last; // } else // { // if(j==0){ // numUp = value; // }else{ // numUp += value; // } // } // rs = stmt // .executeQuery(" SELECT TOP " // + numQuery // + " * " // + " FROM " // + " ( " // + " SELECT TOP " // + numUp // + " a.* " // + " FROM "+tablename+" a " // + " ORDER BY a.`HH` ASC " // + " ) ORDER BY `HH` DESC "); rs = stmt.executeQuery("SELECT * from "+tablename+" ORDER BY HH ASC "); strsql=""; while (rs.next()) { //取access字段值 String KHH = String.valueOf(rs.getInt("KHH")); String HH = String.valueOf(rs.getInt("HH")); String BZMC = rs.getString("BZMC"); if(BZMC==null){ BZMC = ""; } String ZBWZ = rs.getString("ZBWZ"); if(ZBWZ==null){ ZBWZ = ""; } String YYQY = rs.getString("QQYQ"); if(YYQY==null){ YYQY = ""; } String LXDH = rs.getString("LXDH"); if(LXDH==null){ LXDH = ""; } String ZH = rs.getString("ZH"); if(ZH==null){ ZH = ""; } String YSSX = rs.getString("YSSX"); if(YSSX==null){ YSSX = ""; } // if(strsql==""){ strsql = "('"+KHH+"', '"+HH+"', '"+BZMC+"', '"+ZBWZ+"', '"+YYQY+"', '"+LXDH+"', '"+ZH+"', '"+YSSX+"')"; // } // else{ // strsql += ",('"+KHH+"', '"+HH+"', '"+BZMC+"', '"+ZBWZ+"', '"+YYQY+"', '"+LXDH+"', '"+ZH+"')"; // } sm.executeUpdate("insert into yhjbxx (KHH, HH, BZMC, ZBWZ, YYQY, LXDH, ZH, YSSX) values "+ strsql); } //sm.executeUpdate("insert into yhjbxx (KHH, HH, BZMC, ZBWZ, YYQY, LXDH, ZH, YSSX) values "+ strsql); // } sm.executeUpdate("DELETE Y FROM yhjbxx Y WHERE EXISTS ( SELECT * FROM `bus_org` bo JOIN `bus_customer_meter` bcm ON bo.`org_id`=bcm.`org_id` WHERE y.bzmc=bo.`org_name` AND y.yssx=(select base_org_type.org_name from base_org_type where base_org_type.`org_type_id` = bo.`org_type_id`) AND y.zbwz=bcm.`address` AND y.khh=bcm.`customer_Number` AND y.hh = bcm.`meter_Number` AND bcm.`year`='"+year+"')"); sm.close(); stmt.close(); oracleconn.close(); mysqlconn.close(); DBUtils.closeConnection(); } catch (Exception e) { StringBuffer bs = new StringBuffer(); //获取当前抛出异常的字符串 bs.append("\n" + e.fillInStackTrace() + ""); //向上层抛出异常 System.out.println("err oracle=============="+e.toString()); } } private void insertYhjbxx(String mdbPath,ImportDataFile importDataFile,String year) throws Exception{ Statement stmt = null; ResultSet rs = null; String strsql =""; Connection mysqlconn = null; Statement sm = null; try { mysqlconn = DBUtils.getMysqlConn(); sm = mysqlconn.createStatement(); sm.executeUpdate("truncate table yhjbxx"); //打开对应数据库连接 Connection conn = DBUtils .getConnection( DBUtils.DataBaseType.access, //"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}; DBQ="+mdbPath+";charSet=GBK"); "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+mdbPath+";charSet=GBK"); //64位 stmt = (Statement) conn.createStatement(); stmt.executeUpdate("DELETE FROM yhjbxx WHERE ZBWZ like 'YN%'"); stmt.executeUpdate("alter table yhjbxx add `_AutoID_` AUTOINCREMENT(1,1);"); rs = stmt .executeQuery("SELECT COUNT(*) as count FROM YHJBXX"); //查询数据总数 int count = 0; while (rs.next()) { count = rs.getInt("count"); } int last = count % value; int sum = (count - last) / value; int numUp = value; int numQuery = value; for (int j = 0; j < sum + 1; j++) { if (j == sum) { numQuery = last; numUp += last; } else { if(j==0){ numUp = value; }else{ numUp += value; } } rs = stmt .executeQuery(" SELECT TOP " + numQuery + " * " + " FROM " + " ( " + " SELECT TOP " + numUp + " a.* " + " FROM YHJBXX a " + " ORDER BY a.`_AutoID_` ASC " + " ) ORDER BY `_AutoID_` DESC "); strsql=""; while (rs.next()) { //取access字段值 String KHH = String.valueOf(rs.getInt("KHH")); String HH = String.valueOf(rs.getInt("HH")); String BZMC = rs.getString("BZMC"); if(BZMC==null){ BZMC = ""; } String ZBWZ = rs.getString("ZBWZ"); if(ZBWZ==null){ ZBWZ = ""; } String YYQY = rs.getString("YYQY"); if(YYQY==null){ YYQY = ""; } String LXDH = rs.getString("LXDH"); if(LXDH==null){ LXDH = ""; } String ZH = rs.getString("ZH"); if(ZH==null){ ZH = ""; } String YSSX = rs.getString("YSSX"); if(YSSX==null){ YSSX = ""; } if(strsql==""){ strsql = "('"+KHH+"', '"+HH+"', '"+BZMC+"', '"+ZBWZ+"', '"+YYQY+"', '"+LXDH+"', '"+ZH+"', '"+YSSX+"')"; } else{ strsql += ",('"+KHH+"', '"+HH+"', '"+BZMC+"', '"+ZBWZ+"', '"+YYQY+"', '"+LXDH+"', '"+ZH+"', '"+YSSX+"')"; } } sm.executeUpdate("insert into yhjbxx (KHH, HH, BZMC, ZBWZ, YYQY, LXDH, ZH, YSSX) values "+ strsql); } sm.executeUpdate("DELETE Y FROM yhjbxx Y WHERE EXISTS ( SELECT * FROM `bus_org` bo JOIN `bus_customer_meter` bcm ON bo.`org_id`=bcm.`org_id` WHERE y.bzmc=bo.`org_name` AND y.yssx=(select base_org_type.org_name from base_org_type where base_org_type.`org_type_id` = bo.`org_type_id`) AND y.zbwz=bcm.`address` AND y.khh=bcm.`customer_Number` AND y.hh = bcm.`meter_Number` AND bcm.`year`='"+year+"')"); sm.close(); stmt.close(); mysqlconn.close(); conn.close(); DBUtils.closeConnection(); } catch (Exception e) { StringBuffer bs = new StringBuffer(); //获取当前抛出异常的字符串 bs.append("\n" + e.fillInStackTrace() + ""); //向上层抛出异常 throw new Exception(bs.toString()); } } // @SuppressWarnings("rawtypes") @Override public void insertOrgInfoData(String mdbPath,String year,ImportDataFile importDataFile) { StatelessSession session = sessionFactory.openStatelessSession(); Transaction tx = session.beginTransaction(); try { insertYhjbxx(mdbPath,importDataFile,year); SQLQuery query = session.createSQLQuery("{CALL bus_org_procedure(?,?)}"); query.setString(0, year); query.setLong(1, importDataFile.getImportId()); // query.setInteger(2, 0); List list = query.list(); tx.commit(); session.close(); // if("1".equals(list.get(0).toString())){ // importDataFile.setDataStatus(ImportStatus.fail.name()); // importDataFile.setStatusDescription("单位基本信息导入失败!"); // session.update(importDataFile); // }else if("2".equals(list.get(0).toString())){ importDataFile.setDataStatus(ImportStatus.complete.name()); importDataFile.setStatusDescription("单位基本信息导入成功!"); importDataFileService.update(importDataFile); // } } catch (Exception e) { StringBuffer bs = new StringBuffer(); bs.append("\n 失败原因: " + e.fillInStackTrace() + ""); importDataFile.setDataStatus(ImportStatus.fail.name()); importDataFile.setStatusDescription(bs.toString()); importDataFileService.update(importDataFile); e.printStackTrace(); tx.rollback(); } } //** @Override public void insertOracleCbxx(String year,ImportDataFile importDataFile,String month) { Statement stmt = null; ResultSet rs = null; StatelessSession session = sessionFactory.openStatelessSession(); Transaction tx = session.beginTransaction(); Set<Integer> setMonth = new HashSet<>(); try { Connection conn = DBUtils.getOracleConn(); stmt = (Statement) conn.createStatement(); // rs = stmt.executeQuery("SELECT COUNT(0) as count FROM V_CBXX where to_number(to_char(SFYF,'yyyy'))='2020' and to_number(to_char(SFYF,'mm'))='1'"); // int count = 0; // while (rs.next()) { // count = rs.getInt("count"); // } // int last = count % value; // int sum = (count - last) / value; // int numUp = value; // int numQuery = value; // for (int j = 0; j < sum + 1; j++) { // if (j == sum) { // numQuery = last; // numUp += last; // } else { // if(j==0){ // numUp = value; // }else{ // numUp += value; // } // } rs = stmt.executeQuery("SELECT * FROM V_CBXX c where to_number(to_char(SFYF,'yyyy'))='2019' and to_number(to_char(SFYF,'mm'))<'5' ORDER BY c.HH,c.SL ASC"); //rs = stmt.executeQuery("select * from V_CBXX where sfyf>to_date('2019-12-31','yyyy-mm-dd') "); // + numQuery // + " * FROM (SELECT TOP " // + numUp // + " * FROM V_CBXX c where to_number(to_char(SFYF,'yyyy'))='2020' and to_number(to_char(SFYF,'mm'))='1' ORDER BY c.HH,c.SL ASC) ORDER BY c.HH,c.SL DESC"); while (rs.next()) { Integer HH = rs.getInt("HH"); Date SFYF = rs.getDate("SFYF"); String XZMC = rs.getString("XZMC"); Float SL = rs.getFloat("SL"); Float JBSFDJ = rs.getFloat("JBSFDJ"); Float PWFDJ = rs.getFloat("PWFDJ"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy"); String dateString = formatter.format(SFYF); Float zyfdj = rs.getFloat("ZYFDJ"); Float ysbl = rs.getFloat("YSBL"); BusMeterReadInfo busMeterReadInfo = new BusMeterReadInfo(); //根据水表查询对应单位 // BusOrg org = getOrgForUserWaterInfo(session,String.valueOf(HH),year); // if(org==null){//没有对应单位的水表标识为待处理pending状态 busMeterReadInfo.setImportStatus(OrgImportStatus.pending.name()); // }else{//有对应单位的水表则标识为normal正常状态 // busMeterReadInfo.setImportStatus(ImportStatus.normal.name()); // } busMeterReadInfo.setPriceMonth(SFYF); //抄表月份 Integer cb_month = Integer.valueOf(DateUtil.getFormatDateTime(SFYF,"MM")); //用set记录月份信息 setMonth.add(cb_month); Float baseWaterPrice = null; if(XZMC!=null && !"".equals(XZMC)){ //查找用水性质 BaseWaterProperties baseWaterProperties = findBaseWaterProperties(session,XZMC); //如果用水性质不存在则新增用水性质 if(baseWaterProperties==null){ baseWaterPrice = JBSFDJ; BaseWaterProperties tmp = new BaseWaterProperties(XZMC,JBSFDJ); //tmp.setPropertiesName(XZMC); tmp.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); tmp.setCreater(ContextUtil.getCurrentUser()); tmp.setCreateTime(new Date()); session.insert(tmp); busMeterReadInfo.setBaseWaterProperties(findBaseWaterProperties(session,XZMC)); }else{ //根据月份拿到水价 baseWaterPrice = baseWaterProperties.getWaterPrices(busMeterReadInfo.getMonth()); if (baseWaterPrice == null){ baseWaterPrice = JBSFDJ; baseWaterProperties.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); session.update(baseWaterProperties); } busMeterReadInfo.setBaseWaterProperties(baseWaterProperties); } } Integer quarter = null; if(cb_month==1 || cb_month==2 || cb_month==3){ quarter = 1; } if(cb_month==4 || cb_month==5 || cb_month==6){ quarter = 2; } if(cb_month==7 || cb_month==8 || cb_month==9){ quarter = 3; } if(cb_month==10 || cb_month==11 || cb_month==12){ quarter = 4; } busMeterReadInfo.setMonth(cb_month); busMeterReadInfo.setQuarter(quarter); busMeterReadInfo.setWater(SL); busMeterReadInfo.setMeterNumber(HH); //月份的水价 busMeterReadInfo.setBaseWaterPrice(baseWaterPrice); busMeterReadInfo.setSewagePrice(PWFDJ); busMeterReadInfo.setImportId(importDataFile.getImportId()); busMeterReadInfo.setZyfdj(zyfdj); busMeterReadInfo.setYsbl(ysbl); // //如果有匹配的水表,则该用水信息需要关联单位对象 // if(org!=null){ // busMeterReadInfo.setOrg(org); // } busMeterReadInfo.setYear(year); session.insert(busMeterReadInfo); } // } // tx.commit(); SQLQuery query = session.createSQLQuery("{CALL update_user_water_info(?)}"); query.setString(0, year); query.list(); SQLQuery query2 = session.createSQLQuery("{CALL update_quarterly_assessment(?)}"); query2.setString(0, year); query2.list(); if (setMonth.size()>0){ SQLQuery query3 = session.createSQLQuery("{CALL update_month_assessment(?,?)}"); query3.setString(0, year); query3.setString(1, StringUtils.join(setMonth.toArray(),",")); query3.list(); } tx.commit(); session.close(); // updateWaterReadInfo(year); importDataFile.setDataStatus(ImportStatus.complete.name()); importDataFile.setStatusDescription("单位月用水量信息导入成功!"); importDataFileService.update(importDataFile); } catch (Exception e) { StringBuffer bs = new StringBuffer(); bs.append("\n 失败原因: " + e.fillInStackTrace() + ""); importDataFile.setDataStatus(ImportStatus.fail.name()); importDataFile.setStatusDescription(bs.toString()); importDataFileService.update(importDataFile); e.printStackTrace(); tx.rollback(); } } @Override public void insertMeterReadInfoData(String mdbPath,String year,ImportDataFile importDataFile) { Statement stmt = null; ResultSet rs = null; StatelessSession session = sessionFactory.openStatelessSession(); Transaction tx = session.beginTransaction(); Set<Integer> setMonth = new HashSet<>(); try { Connection conn = DBUtils .getConnection( DBUtils.DataBaseType.access, //"jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+mdbPath+";charSet=GBK"); //"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}; DBQ="+mdbPath+";charSet=GBK"); //32位 "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+mdbPath+";charSet=GBK"); //64位 stmt = (Statement) conn.createStatement(); stmt.executeUpdate("alter table CBXX add `_AutoID_` AUTOINCREMENT(1,1);"); rs = stmt.executeQuery("SELECT COUNT(*) as count FROM CBXX"); int count = 0; while (rs.next()) { count = rs.getInt("count"); } int last = count % value; int sum = (count - last) / value; int numUp = value; int numQuery = value; for (int j = 0; j < sum + 1; j++) { if (j == sum) { numQuery = last; numUp += last; } else { if(j==0){ numUp = value; }else{ numUp += value; } } rs = stmt .executeQuery("SELECT TOP " + numQuery + " * FROM (SELECT TOP " + numUp + " * FROM CBXX c ORDER BY c.`_AutoID_` ASC) ORDER BY `_AutoID_` DESC"); while (rs.next()) { Integer HH = rs.getInt("HH"); Date SFYF = rs.getDate("SFYF"); String XZMC = rs.getString("XZMC"); Float SL = rs.getFloat("SL"); Float JBSFDJ = rs.getFloat("JBSFDJ"); Float PWFDJ = rs.getFloat("PWFDJ"); BusMeterReadInfo busMeterReadInfo = new BusMeterReadInfo(); //根据水表查询对应单位 // BusOrg org = getOrgForUserWaterInfo(session,String.valueOf(HH),year); // if(org==null){//没有对应单位的水表标识为待处理pending状态 busMeterReadInfo.setImportStatus(OrgImportStatus.pending.name()); // }else{//有对应单位的水表则标识为normal正常状态 // busMeterReadInfo.setImportStatus(ImportStatus.normal.name()); // } busMeterReadInfo.setPriceMonth(SFYF); //抄表月份 Integer cb_month = Integer.valueOf(DateUtil.getFormatDateTime(SFYF,"MM")); //用set记录月份信息 setMonth.add(cb_month); busMeterReadInfo.setMonth(cb_month); Float baseWaterPrice = null; if(XZMC!=null && !"".equals(XZMC)){ //查找用水性质 BaseWaterProperties baseWaterProperties = findBaseWaterProperties(session,XZMC); //如果用水性质不存在则新增用水性质 if(baseWaterProperties==null){ baseWaterPrice = JBSFDJ; BaseWaterProperties tmp = new BaseWaterProperties(XZMC,JBSFDJ); tmp.setPropertiesName(XZMC); tmp.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); tmp.setCreater(ContextUtil.getCurrentUser()); tmp.setCreateTime(new Date()); session.insert(tmp); busMeterReadInfo.setBaseWaterProperties(findBaseWaterProperties(session,XZMC)); }else{ //根据月份拿到水价 baseWaterPrice = baseWaterProperties.getWaterPrices(busMeterReadInfo.getMonth()); if (baseWaterPrice == null){ baseWaterPrice = JBSFDJ; baseWaterProperties.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); session.update(baseWaterProperties); } busMeterReadInfo.setBaseWaterProperties(baseWaterProperties); } } Integer quarter = null; if(cb_month==1 || cb_month==2 || cb_month==3){ quarter = 1; } if(cb_month==4 || cb_month==5 || cb_month==6){ quarter = 2; } if(cb_month==7 || cb_month==8 || cb_month==9){ quarter = 3; } if(cb_month==10 || cb_month==11 || cb_month ==12){ quarter = 4; } busMeterReadInfo.setQuarter(quarter); busMeterReadInfo.setWater(SL); busMeterReadInfo.setMeterNumber(HH); //月份的水价 busMeterReadInfo.setBaseWaterPrice(baseWaterPrice); busMeterReadInfo.setSewagePrice(PWFDJ); busMeterReadInfo.setImportId(importDataFile.getImportId()); // //如果有匹配的水表,则该用水信息需要关联单位对象 // if(org!=null){ // busMeterReadInfo.setOrg(org); // } busMeterReadInfo.setYear(year); session.insert(busMeterReadInfo); } } // tx.commit(); SQLQuery query = session.createSQLQuery("{CALL update_user_water_info(?)}"); query.setString(0, year); query.list(); SQLQuery query2 = session.createSQLQuery("{CALL update_quarterly_assessment(?)}"); query2.setString(0, year); query2.list(); if (setMonth.size()>0){ SQLQuery query3 = session.createSQLQuery("{CALL update_month_assessment(?,?)}"); query3.setString(0, year); query3.setString(1, StringUtils.join(setMonth.toArray(),",")); query3.list(); } tx.commit(); session.close(); // updateWaterReadInfo(year); importDataFile.setDataStatus(ImportStatus.complete.name()); importDataFile.setStatusDescription("单位月用水量信息导入成功!"); importDataFileService.update(importDataFile); } catch (Exception e) { StringBuffer bs = new StringBuffer(); bs.append("\n 失败原因: " + e.fillInStackTrace() + ""); importDataFile.setDataStatus(ImportStatus.fail.name()); importDataFile.setStatusDescription(bs.toString()); importDataFileService.update(importDataFile); e.printStackTrace(); tx.rollback(); } } @Override public void insertMeterReadInfoDataByExce(String year, List<String[]> dataList) { if (dataList.size() <= 0) { return ; } StatelessSession session = sessionFactory.openStatelessSession(); Set<Integer> setMonth = new HashSet<>(); Transaction tx = session.beginTransaction(); for (int i = 1; i < dataList.size(); i++) { //跳过标题头 String[] item = dataList.get(i); Integer HH = Integer.parseInt(item[0].toString()); String str_SFYF = item[1]; str_SFYF = str_SFYF.replaceAll("/","-"); Date SFYF = null; try { SFYF = DateUtil.parseDate(str_SFYF,new String[]{"yyyy-MM-dd"}); } catch (ParseException e) { e.printStackTrace(); } String XZMC = item[2]; Float SL = Float.valueOf(item[3]); Float JBSFDJ = Float.valueOf(item[4]); Float PWFDJ = Float.valueOf(item[5]); BusMeterReadInfo busMeterReadInfo = new BusMeterReadInfo(); //根据水表查询对应单位 // BusOrg org = getOrgForUserWaterInfo(session,String.valueOf(HH),year); // if(org==null){//没有对应单位的水表标识为待处理pending状态 busMeterReadInfo.setImportStatus(OrgImportStatus.pending.name()); // }else{//有对应单位的水表则标识为normal正常状态 // busMeterReadInfo.setImportStatus(ImportStatus.normal.name()); // } busMeterReadInfo.setPriceMonth(SFYF); //抄表月份 Integer cb_month = Integer.valueOf(DateUtil.getFormatDateTime(SFYF,"MM")); //用set记录月份信息 setMonth.add(cb_month); busMeterReadInfo.setMonth(cb_month); Float baseWaterPrice = null; if(XZMC!=null && !"".equals(XZMC)){ //查找用水性质 BaseWaterProperties baseWaterProperties = findBaseWaterProperties(session,XZMC); //如果用水性质不存在则新增用水性质 if(baseWaterProperties==null){ baseWaterPrice = JBSFDJ; BaseWaterProperties tmp = new BaseWaterProperties(); tmp.setPropertiesName(XZMC); tmp.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); tmp.setCreater(ContextUtil.getCurrentUser()); tmp.setCreateTime(new Date()); session.insert(tmp); busMeterReadInfo.setBaseWaterProperties(findBaseWaterProperties(session,XZMC)); }else{ //根据月份拿到水价 baseWaterPrice = baseWaterProperties.getWaterPrices(busMeterReadInfo.getMonth()); if (baseWaterPrice == null){ baseWaterPrice = JBSFDJ; baseWaterProperties.setWaterPrices(busMeterReadInfo.getMonth(),JBSFDJ); session.update(baseWaterProperties); } busMeterReadInfo.setBaseWaterProperties(baseWaterProperties); } } Integer quarter = null; if(cb_month==1 || cb_month==2 || cb_month==3){ quarter = 1; } if(cb_month==4 || cb_month==5 || cb_month==6){ quarter = 2; } if(cb_month==7 || cb_month==8 || cb_month==9){ quarter = 3; } if(cb_month==10 || cb_month==11 || cb_month ==12){ quarter = 4; } busMeterReadInfo.setQuarter(quarter); busMeterReadInfo.setWater(SL); busMeterReadInfo.setMeterNumber(HH); //月份的水价 busMeterReadInfo.setBaseWaterPrice(baseWaterPrice); busMeterReadInfo.setSewagePrice(PWFDJ); busMeterReadInfo.setImportId(0L); busMeterReadInfo.setYear(year); session.insert(busMeterReadInfo); } SQLQuery query = session.createSQLQuery("{CALL update_user_water_info(?)}"); query.setString(0, year); query.list(); SQLQuery query2 = session.createSQLQuery("{CALL update_quarterly_assessment(?)}"); query2.setString(0, year); query2.list(); if (setMonth.size()>0){ String monthStr = StringUtils.join(setMonth.toArray(),","); log.info(monthStr); SQLQuery query3 = session.createSQLQuery("{CALL update_month_assessment(?,?)}"); query3.setString(0, year); query3.setString(1, monthStr); query3.list(); } tx.commit(); session.close(); } /** * 查找用水性质 * @param session * @param XZMC * @return */ @SuppressWarnings("unchecked") private BaseWaterProperties findBaseWaterProperties(StatelessSession session,String XZMC) { List<BaseWaterProperties> list = new ArrayList<BaseWaterProperties>(); try { Query dataItor = session.createQuery("SELECT b FROM BaseWaterProperties b WHERE propertiesName='"+XZMC+"'"); list = (List<BaseWaterProperties>)dataItor.list(); } catch (Exception e) { e.printStackTrace(); } if(list.size()>0){ return list.get(0); }else{ return null; } } // private void updateWaterReadInfo(String year) { // RowMapper<Object[]> rowMapper = new RowMapper<Object[]>() { // // @Override // public Object[] mapRow(ResultSet rs, int index) throws SQLException { // Object[] obj = new Object[3]; // obj[0] = rs.getInt("org_number"); // obj[1] = rs.getLong("org_id"); // obj[2] = rs.getInt("meter_Number"); // return obj; // } // // }; // // String sql = "SELECT bo.`org_number`,bo.`org_id`,bcm.`meter_Number` FROM `bus_org` bo JOIN `bus_customer_meter` bcm ON bo.`org_id`=bcm.`org_id` WHERE bo.`year`=?"; // List<Object[]> list = jdbcTemplate.query(sql, rowMapper,year); // for (int i = 0; i < list.size(); i++) { // Object[] object = list.get(i); // String orgNumber = ""; // if(object[0]!=null){ // orgNumber = object[0].toString(); // } // String s = // "UPDATE `bus_meter_read_info` SET `import_status`='normal',`org_id`=?,`org_number`=? WHERE `import_status`='pending' AND `meter_number`=? AND year=?" ; // jdbcTemplate.update(s, new Object[]{Long.valueOf(object[1].toString()),orgNumber,object[2].toString(),year}); // } // // jdbcTemplate.update("DELETE FROM `bus_meter_read_info` WHERE `import_status`='pending'"); // } }