數據類型轉換/JpaUtil問題總結

 參照下述方法摸索JpaUtil我會遇到的問題::

             任務:需要在數據循環的時候進行數據過濾,,項目中出現過期的合同也初始化到頁面了,,

1、  String c ;

        a.parse( c );   將String值轉換成指定格式的 Date
       b.Format( a ); 將Date 指定格式轉換成String 

一: 下面方法中傳值: String sssdgs= "000100000" ,String jyyf ="202001"  ,String tbr ="aaaa"

問題: JpaUtil.find /JpaUtil.load 這種方法跟我其餘遇到的方法的使用方面不一樣,,這種方法特別的噁心

          1、思路彙總 : 以下方法中,,使用 Calendar 獲取 當天時間,,並在當前時間上進行 年月日的加減及賦值

//獲取當天時間
        Calendar c = Calendar.getInstance();
        // 獲取年
        int year = c.get(Calendar.YEAR);
        // 獲取月份,0表示1月份
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DATE);

 

 

2、  使用  Calendar calendar = Calendar.getInstance();  ,獲取當前時間的 前一個月 / 前一年 ,有date日期類型的時間方面的問題可參考:

結構:

String jyyf ="202001";
Calendar calendar = Calendar.getInstance(); // 默認是當前日期
// 設置傳入的時間格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMM");
// 指定一個日期
Date date;
try {

           


            date = dateFormat.parse(jyyf);  // 頁面傳值202001     //(注意: jyyf的數據格式必須跟上述的“yyyyMM”一致,不一                                                                                                         致會報錯)
            calendar.setTime(date);                                               //將date的值賦給 calendar 
            calendar.add(Calendar.MONTH, -1);                           // 月份減一 ,得到前一個月
            hbsj = dateFormat.format(calendar.getTime()) + "";    //將月份減一的值賦值給 hbsj, = 201912 

 
            calendar.setTime(date);                                                //跟上面的不衝突,重新將date賦值給 calender  // =202001
            calendar.add(Calendar.YEAR, -1); // 年份減1                // = 201901
            tbsj = dateFormat.format(calendar.getTime()) + "";         // 201901
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 

****重點: 我在這裏遇到了許多問題,,關於時間格式轉換的,,腦子都快禿了,,搞得亂七八咋但是也算解決了,,後面有 空倒是可以優化優化

 

List<GdYhydxq> list = new ArrayList<GdYhydxq>();
        String[] yhbsQBStrArray = SSSDGSQB.split(",");                                        k//Split() 拼接,將值用 “,”分開,多選     
      

        // 開始日期
        String endTime ="";
        Calendar calendar2 = Calendar.getInstance(); // 默認是當前日期
        // 對 calendar 設置時間的方法
        // 設置傳入的時間格式
        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyyMM");   //yyyy-MM-dd hh:mm:ss
        SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyyMMdd");   //yyyy-MM-dd hh:mm:ss
        // 指定一個日期
        Date date2;
        String date3 =null;  //開始時間
        Date date4;
        String date5 =null;  //結束時間
        Date date6;
        String date7 =null;
        Date date8;
        String date9 =null;
        try {
            date2 = dateFormat2.parse(jyyf);  // 頁面傳值202001 

說明:上述中 dateFormat2("yyyyMM"), 將 parse:  date2可以是String類型,將String類型的 jyyf 轉換成date格式,String              的值必須 跟 dateFormat2一致,


            date3 = dateFormat3.format(date2);  // 頁面傳值20210101   //String

說明: 上述中,dateFormat3("yyyyMMdd");   Format(): 只能是date格式的數據,,不允許String, 作用:指定數據顯示的                  格 式,並將date格式的數據轉換成String
            

             / /date =  (yyyyMMdd).parse(String)
            date6 = dateFormat3.parse(date3);           

             //String = (yyyy-MM-dd hh:mm:ss).format.(Date)
            date7 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date6); 
            
            // 對 calendar 設置爲 date 所定的日期
            calendar2.setTime(date2);                                                            //202001
            calendar2.add(Calendar.MONTH, -1);                                          // 得到前一個月  201912
            endTime = dateFormat2.format(calendar2.getTime()) + "";          //hbsj= 202012
            
            date4 = dateFormat3.parse(date3);
            calendar2.setTime(date4);                      //20200101
             calendar2.set(Calendar.DATE, 1);        //set 設置calendar的天數值爲1,如果calendar爲20200105,那麼使用此方法後會將day這天初始化爲‘1’
             calendar2.roll(Calendar.DATE, -1);    //回滾一天 ,如果設置上述值爲1,那麼回滾了一天就會變成當月的最後一天,roll會在當前月的天數內進行循環操作
            date5 =dateFormat3.format(calendar2.getTime()) + "";
            
            date8 = dateFormat3.parse(date5);
            date9 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date8);
            
            
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        Timestamp XHRQ =Timestamp.valueOf(date9);
        Timestamp ZZRQ =Timestamp.valueOf(date7);
        
        for (int i = 0; i < yhbsQBStrArray.length; i++) {
            
            /*QueryParamList paramQueryParamList = new QueryParamList();
            paramQueryParamList.addParam("sssdgs", yhbsQBStrArray[i]);
            
            List<KhYhda> userlist = JPAUtil.load(KhYhda.class,
                    paramQueryParamList);*/

        /*    String xx ="2020-01-31"; 
            String sql ="select * from kh_yhda where"
                    + " yhbh in(select DISTINCT(yhbh) "
                    + "from ht_htjbxx where sxrq<" + xx;
            String jpql = "select kh from KhYhda kh where kh.yhbh in (select distinct ht.yhbh from HtHtjbxx ht where ht.sxrq < :xx)";
            paramQueryParamList.addParam("xx",Timestamp.valueOf(xx));
            PagedData pa = new PagedData();
            pa.setDataList(JPAUtil.find(jpql, paramQueryParamList));
            List<KhYhda> userlist = JPAUtil.load(KhYhda.class,null,jpql, paramQueryParamList,null);*/
            
            
            
            
            QueryParamList paramQueryParamList = new QueryParamList();
            String sqlP1 =" select kh from KhYhda kh where kh.yhbh in(select DISTINCT(ht.yhbh) from HtHtjbxx ht where ht.sxrq<:sxrq and zzrq> :zzrq and sssdgs=:sssdgs) ";  
            paramQueryParamList.addParam("sssdgs", yhbsQBStrArray[i]);
            paramQueryParamList.addParam("sxrq", XHRQ);
            paramQueryParamList.addParam("zzrq", ZZRQ);
            
            
            
            List<Object> userlist =  JPAUtil.find(sqlP1,paramQueryParamList );

 

 

 

在下方進行數據過濾操作,過程中遇到String 類型的 jyyf 無法轉換爲 timetamp 格式,出現報錯

  • /**
         * 初始化添加用戶信息
         * 
         * @param SSSDGSQB
         * @return
         */
        @Override
        public String addretrieveSbCSH(String SSSDGSQB, String jyyf, String tbr) {
            // TODO Auto-generated method stub

            // 獲取申報年份月份
            String sbyf = "";
            String sbyff = "";
            String tbsj = "";
            String hbsj = "";
            /* String jyyf=""; */
            //獲取當天時間
            Calendar c = Calendar.getInstance();
            // 獲取年
            int year = c.get(Calendar.YEAR);
            // 獲取月份,0表示1月份
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DATE);
            //201901-201912
            if (month + 1 < 10) {
                sbyf = year + "0" + (month + 1);
            } else {
                sbyf = year + "" + (month + 1);
            }
            //20190101-10191231
            if (day < 10) {
                sbyff = sbyf + "0" + (day);
            } else {
                sbyff = sbyf + "" + (day);
            }

            // 獲取同比時間 環比時間(同比就是比去年同期,比如今年8月比去年8月。環比就是比上個月,今年8月比今年7月)
            Calendar calendar = Calendar.getInstance(); // 默認是當前日期
            // 對 calendar 設置時間的方法
            // 設置傳入的時間格式
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMM");
            // 指定一個日期
            Date date;
            try {
                date = dateFormat.parse(jyyf);  // 頁面傳值202101
                // 對 calendar 設置爲 date 所定的日期
                calendar.setTime(date);
                calendar.add(Calendar.MONTH, -1); // 得到前一個月
                hbsj = dateFormat.format(calendar.getTime()) + "";    //hbsj= 202012
                calendar.setTime(date);
                calendar.add(Calendar.YEAR, -1); // 年份減1
                tbsj = dateFormat.format(calendar.getTime()) + "";
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            /*
             * if(month+2<10){ jyyf=year+"0"+(month+2); }else if(month+2>12){
             * jyyf=(year+1)+"01"; }else{ jyyf=year+""+(month+2); }
             */

            List<GdYhydxq> list = new ArrayList<GdYhydxq>();
            String[] yhbsQBStrArray = SSSDGSQB.split(",");
            
            /*Date d3 = new Date();
            SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            Calendar calendar3 = Calendar.getInstance();
            String dateNowStr3 = sdf3.format(d3);
            Timestamp a1 = Timestamp.valueOf(dateNowStr3);*/
            
            // 開始日期
            String endTime ="";
            Calendar calendar2 = Calendar.getInstance(); // 默認是當前日期
            // 對 calendar 設置時間的方法
            // 設置傳入的時間格式
            SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyyMM");   //yyyy-MM-dd hh:mm:ss
            SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyyMMdd");   //yyyy-MM-dd hh:mm:ss
            // 指定一個日期
            Date date2;
            String date3 =null;  //開始時間
            Date date4;
            String date5 =null;  //結束時間
            Date date6;
            String date7 =null;
            Date date8;
            String date9 =null;
            try {
                date2 = dateFormat2.parse(jyyf);  // 頁面傳值202101
                date3 = dateFormat3.format(date2);  // 頁面傳值20210101
                
                date6 = dateFormat3.parse(date3);
                date7 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date6);
                
                
                // 對 calendar 設置爲 date 所定的日期
                calendar2.setTime(date2);
                calendar2.add(Calendar.MONTH, -1); // 得到前一個月
                endTime = dateFormat2.format(calendar2.getTime()) + "";    //hbsj= 202012
                
                date4 = dateFormat3.parse(date3);
                calendar2.setTime(date4);
                 calendar2.set(Calendar.DATE, 1);
                 calendar2.roll(Calendar.DATE, -1);
                date5 =dateFormat3.format(calendar2.getTime()) + "";
                
                date8 = dateFormat3.parse(date5);
                date9 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date8);
                
                
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            Timestamp XHRQ =Timestamp.valueOf(date9);
            Timestamp ZZRQ =Timestamp.valueOf(date7);
            
            for (int i = 0; i < yhbsQBStrArray.length; i++) {
                
                /*QueryParamList paramQueryParamList = new QueryParamList();
                paramQueryParamList.addParam("sssdgs", yhbsQBStrArray[i]);
                
                List<KhYhda> userlist = JPAUtil.load(KhYhda.class,
                        paramQueryParamList);*/

            /*    String xx ="2020-01-31"; 
                String sql ="select * from kh_yhda where"
                        + " yhbh in(select DISTINCT(yhbh) "
                        + "from ht_htjbxx where sxrq<" + xx;
                String jpql = "select kh from KhYhda kh where kh.yhbh in (select distinct ht.yhbh from HtHtjbxx ht where ht.sxrq < :xx)";
                paramQueryParamList.addParam("xx",Timestamp.valueOf(xx));
                PagedData pa = new PagedData();
                pa.setDataList(JPAUtil.find(jpql, paramQueryParamList));
                List<KhYhda> userlist = JPAUtil.load(KhYhda.class,null,jpql, paramQueryParamList,null);*/
                
                
                
                
                QueryParamList paramQueryParamList = new QueryParamList();
                String sqlP1 =" select kh from KhYhda kh where kh.yhbh in(select DISTINCT(ht.yhbh) from HtHtjbxx ht where ht.sxrq<:sxrq and zzrq> :zzrq and sssdgs=:sssdgs) ";  
                paramQueryParamList.addParam("sssdgs", yhbsQBStrArray[i]);
                paramQueryParamList.addParam("sxrq", XHRQ);
                paramQueryParamList.addParam("zzrq", ZZRQ);
                
                
                
                List<Object> userlist =  JPAUtil.find(sqlP1,paramQueryParamList );
                        
                if (userlist.size() > 0) {
                    for (int j = 0; j < userlist.size(); j++) {  //userlist 中有1460條數據
                        //Object[] objs = (Object[])userlist.get(j);
                        KhYhda da = (KhYhda)userlist.get(j);
                        String yhbs = String.valueOf(da.getYhbs());
                        
                        Long yhbs2 = da.getYhbs();
                        
                        QueryParamList bsParamList = new QueryParamList();
                        //獲取khyhda中的數據批量新增用戶編號
                        bsParamList.addParam("gdXqYhbh", yhbs
                                + "");
                        //頁面202101交易月份賦值給 GdYhydxq 中的gdXqJyyf
                        bsParamList.addParam("gdXqJyyf", jyyf + "");
                        List<GdYhydxq> bslist = JPAUtil.load(GdYhydxq.class,
                                bsParamList);
                        //判斷GdYhydxq中是否有重複數據有則跳過無則增加一條數據
                        if (bslist.size() > 0) {
                            continue;
                        }
                        //zk
                        /*QueryParamList csParamList = new QueryParamList();
                        csParamList.addParam("xhrq", userlist.get(j).getXhrq()
                                + "");
                        List<KhYhda> cslist = JPAUtil.load(KhYhda.class,
                                csParamList);*/
                        /*Date d2 = new Date();
                        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                        String dateNowStr2 = sdf2.format(d2);
                        Timestamp a = Timestamp.valueOf(dateNowStr2);
                        Timestamp b =userlist.get(j).getXhrq();
                        System.out.println("555555555555555555555555555555555555");
                        System.out.println(a.getTime());
                        System.out.println(b.getTime());*/
                        
                        /*if(da.getXhrq()!= null &&!"".equals(da.getXhrq())){
                            KhYhda da2 = (KhYhda)userlist.get(j);
                            Date d2 = new Date();
                            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                            String dateNowStr2 = sdf2.format(d2);
                            Timestamp a = Timestamp.valueOf(dateNowStr2); //當前時間
                            Timestamp b =da2.getXhrq();       //銷戶日期
                            if (a.getTime() >b.getTime() ) {    //銷戶日期小於當前時間跳過
                                continue;
                            }
                        }*/
                        
                        GdYhydxq gd = new GdYhydxq();
                        gd.setGdXqSbyf(sbyf);  //201912 當前月份
                        gd.setGdXqJyyf(jyyf);  //202101 頁面傳值月份
                        gd.setGdXqTbr(tbr);       // ywny
                        
                        Date d = new Date();
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                        String dateNowStr = sdf.format(d);
                        gd.setGdXqTbrq(Timestamp.valueOf(dateNowStr));
                        gd.setGdXqJqzq("1"); // 月度
                        gd.setGdXqYhlx(da.getYhxzdm());
                        gd.setGdXqYhbhT(da.getYhbh());
                        gd.setGdXqYhbh(String.valueOf(da.getYhbs()) + "");
                        gd.setGdXqSdgs(da.getSssdgs());
                        QueryParamList lxrParamList = new QueryParamList();
                        
                        //不能直接在addParam中轉換,需轉換後再放進去,噁心】】
                        lxrParamList.addParam("yhbs",yhbs2);
                        List<KhKhlxr> lxrlist = JPAUtil.load(KhKhlxr.class,
                                lxrParamList);
                        if (lxrlist.size() > 0) {
                            gd.setLxr(lxrlist.get(0).getLxrxm());
                            gd.setLxfs(lxrlist.get(0).getSjhm1());
                        }
                        gd.setGdXqYhmc(da.getYhmc());
                        // gd.setGdXqYdfl(userlist.get(j).getHyfldm());
                        // 默認爲(同比電量+環比電量)/2
                        // 申報電量 月均 最大月份 最大電量 確認狀況
                        gd.setQrqk("N");
                        gd.setSjly("X");
                        gd.setShjy("W");
                        gd.setSblx("01");//申報類型   正常申報
                    /*    String sqlcx = "SELECT    b.zdl AS zddl,    b.dfyf AS dfyf, "+
                                    "(SELECT sum(e.zdl) FROM (SELECT MAX(b.zdl) zdl    FROM "+
                                    "    wbjc_jyyhsfqd b ,kh_yhda c    WHERE b.DFYF = '"+ hbsj+"'    AND b.YHBH= c.yhbh and c.yhbs  = '"    + userlist.get(j).getYhbs()    + "' AND B.YHID IS NOT NULL  GROUP BY b.JLDBH ) AS e ) AS hbdl, "+
                                    "( SELECT sum(e.zdl) FROM (SELECT        Max(b.zdl)zdl    FROM wbjc_jyyhsfqd b ,kh_yhda c    WHERE    b.DFYF = '"+ tbsj+ "' "+
                                    "    AND b.YHBH= c.yhbh and c.yhbs = '"    + userlist.get(j).getYhbs()    + "' AND B.YHID IS NOT NULL  GROUP BY b.JLDBH )AS e    ) AS tbdl, "+
                                    "(    SELECT    trim(    ROUND(    (SUM(IFNULL(b.zdl, 0)) / 130000    ),6))FROM wbjc_jyyhsfqd b ,kh_yhda c    WHERE "+
                                    " b.DFYF >= '"+ tbsj+ "'    AND b.DFYF <= '"+ jyyf+ "'    AND b.YHBH= c.yhbh and c.yhbs  = '"    + userlist.get(j).getYhbs()    + "'AND B.YHID IS NOT NULL  ) AS pjdl    FROM wbjc_jyyhsfqd b,kh_yhda c WHERE "+
                                    "(    b.DFYF >= '"+ tbsj+ "'    AND b.DFYF <= '"+ jyyf+ "'"+
                                    ")    AND b.YHBH= c.yhbh and c.yhbs = '"    + userlist.get(j).getYhbs()    + "' AND B.YHID IS NOT NULL  ORDER BY zdl DESC LIMIT 0,1";
                        
                        */
                        
                        String sqlcx = "SELECT 'W' SHJY,c.YJSBDL SBDL, c.SQDL hbdl, c.TQDL tbdl, c.YJYDL pjdl,c.ZDYDYF dfyf, "+
                                        " c.ZDDL zddl FROM kh_yhda a,wbjc_dsrw_dldf c where a.YHBH = c.YHBH AND a.yhbs = '"+da.getYhbs()+
                                        "' AND c.SBYF='"+jyyf+"' AND a.SSSDGS='"+yhbsQBStrArray[i]+"' ORDER BY     c.YJSBDL DESC";
                        
                        DBTool dbTool = new DBTool("jdbcTemplate");
                        Record[] execute;
                        execute = dbTool.executeQuery(sqlcx, null);

                        if (execute == null || execute.length <= 0) {
                            /*gd.setGdXqSbdl(new BigDecimal("0"));*/
                            gd.setYcdl(new BigDecimal("0"));  //初始化爲0
                        } else {

                            for (Record record : execute) {

                                if (null != record.getString("zddl")) {
                                    gd.setZjsydl((new BigDecimal(record    //最大實際用電量(萬kWh)
                                            .getString("zddl")).divide(
                                            new BigDecimal(1), 2,
                                            RoundingMode.HALF_UP)));
                                }
                                if (null != record.getString("dfyf")) {
                                    gd.setZdjyyf(record.getString("dfyf")); //最大用電量月份
                                }
                                if (null != record.getString("pjdl")) {
                                    gd.setGdXqYjdl(new BigDecimal(record    //月均用電量(萬kWh)
                                            .getString("pjdl")));
                                }
                                if (null != record.getString("SBDL")) {     //預測電量
                                    gd.setYcdl((new BigDecimal(record
                                            .getString("SBDL")).divide(
                                            new BigDecimal(1), 2,
                                            RoundingMode.HALF_UP)));
                                }
                                /*if (null != record.getString("SBDL")) {
                                    gd.setGdXqSbdl((new BigDecimal(record
                                            .getString("SBDL")).divide(
                                            new BigDecimal(1), 2,
                                            RoundingMode.HALF_UP)));
                                }*/
                                if (null != record.getString("tbdl")) {
                                    gd.setTqdl((new BigDecimal(record
                                            .getString("tbdl")).divide(
                                            new BigDecimal(1), 2,
                                            RoundingMode.HALF_UP)));
                                }
                                if (null != record.getString("hbdl")) {
                                    gd.setSqdl((new BigDecimal(record
                                            .getString("hbdl")).divide(
                                            new BigDecimal(1), 2,
                                            RoundingMode.HALF_UP)));
                                }
                            }
                        }

                        // 賦值主鍵
                        gd.setGdXq(Integer.valueOf(SequenceUtil
                                .genStringEntitySequenceNo(GdYhydxq.class)));

                        list.add(gd);
                    }
                }
            }

            if (list.size() > 0) {
                JPAUtil.create(list);
                return "1";
            } else {
                return "0";
            }
        }
     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章