小孔大胖 2018-05-28 06:23 采纳率: 0%
浏览 1102
已结题

请问大神如何将下面的Perl转换成java版本

最好能写出详细的方法,我现在能够实现的是用.properties连接数据库 想转换成java版本,打成jar包放到linux环境的定时任务执行

my ($sum_level,$sql,$dbhome,$gsm_type,$lte_type,$start_time,$end_time,$db_type,$scm,$programe,$start_date,$end_date,$db_ini,$detials_time,$detiale_time,$ustime);
my ($cmd_line,$app_name,$province_id,$Convert_type,$debug,$detail_log_name,$flag,$range_second,$todaysum);

my $dbhome = $ENV{"DB_PATH"};

if((!defined($dbhome) || ! -d $dbhome))
{
die("Do not define the env 'DB_PATH' or it does not exist\n");
}

my $cmd_line = $0." ".join(" ",@ARGV);
my $programe = $0;

$programe =~ /\b(\w+).pl/i;
my $app_name = $1;

my $db_ini = "$dbhome/db.ini";
my $gsm_type = "GSM";
my $lte_type = "LTE";

GetOptions(
"u=i" =>\$sum_level,
"s:s" =>\$start_time,
"e:s" =>\$end_time
);

my $scm = new SumCommonModule("$app_name",$debug,$detail_log_name,$$);
$scm->connect_db($db_ini);

my $db_type = $scm->get_db_type();

if($sum_level ==1 )
{
$start_time = int2date(date2int(current()) - 24*3600) if($start_time eq "");
$end_time = $start_time if($end_time eq "");

}
elsif($sum_level ==3 )
{
$start_time = int2date(date2int(current()) - 24*28*3600) if($start_time eq ""); #��Ҫ�Զ����㴦
$end_time = $start_time if($end_time eq "");

}
else
{
die("Please input sum_level Parameter ,The sum_level must be in(1,3) \n");
}

($start_time,$end_time) = time_range($start_time,$end_time,$sum_level,"T");
($detials_time,$detiale_time) = time_range($start_time,$end_time,3,"D");

my ($start_date,$end_date) = time_range($start_time,$end_time,$sum_level,"D");

$ustime = TimeOpt::GMtime($start_time,"-1D");
$ustime = TimeOpt::CFtime("MM/DD/YYYY",$ustime);

print "xxxxxxxxx $sum_level \n";

print "$start_time,$end_time,$detials_time,$detiale_time,$ustime\n";

#<=============================================================================

my ($tmp_irms_radio2g_day,$tmp_irms_radio4g_day,$tmp_sitecode_num,$tmp_irms2npm_stcode_traffic,$tmp_last_num); #������ʱ��

create_temp_name("tmp",\$tmp_irms_radio2g_day,\$tmp_irms_radio4g_day,\$tmp_sitecode_num,\$tmp_irms2npm_stcode_traffic,\$tmp_last_num);

#<=============================================================================
print "xxxxxxxxxxxxxxxb $db_type \n";

$scm->set_sql_note(" Delete irms_radio_cell double cell_name");
$sql = qq {
DELETE nrmdb:irms_radio_cell
WHERE label_cn in(
SELECT a.label_cn
FROM nrmdb:irms_radio_cell a,nrmdb:irms_radio_cell b
WHERE a.label_cn = b.label_cn
AND a.cuid != b.cuid);

        DELETE irms2npm_stcode_traffic 
            WHERE first_result = '$start_date';


        insert into irms2npm_stcode_traffic (first_result, sitecode, codename)
        select '$start_date' , mobile_sitecode, report_site_code_name
        from nrmdb:irms_sitecode_cell
        where 1=1;

      };

$scm->execute_batch($sql);

GSM_cell_sum();
LTE_cell_sum();

my $pattern = "[-\/ :]+";

my $test_date = TimeOpt::CFtime("YYYY-MM-DD "."00:00:00",$start_time);

my @splite_list= split(/$pattern/, $test_date);

my ($syear,$smon,$sday,$shour,$smin,$ssec) = @splite_list; # MM/DD/YYYY �ж��Ƿ���1�ţ�ִ���»���

if ($sday == 1)
{
Month_sum( TimeOpt::GMtime($test_date,"-1M") , TimeOpt::GMtime($test_date,"-1D"));
}

sub GSM_cell_sum()
{
$scm->set_sql_note("Start $gsm_type cell_sum");

my $sql = qq 
   {
        CREATE TABLE $tmp_irms_radio2g_day       
                    (
                        int_id integer,
                        first_result datetime year to second,
                        label_cn varchar(255),
                        tch_traffic float
                    );
        CREATE INDEX ix0_irms_radio2g_day on $tmp_irms_radio2g_day (int_id,label_cn) ;


        INSERT INTO $tmp_irms_radio2g_day  (int_id ,first_result,tch_traffic)
            SELECT ne_id,first_result,tch_traffic
            FROM tpa_radio_sum
            WHERE first_result='$start_time'
            AND sum_level=1
            AND ne_type=300
            AND busy_type=0;


        UPDATE $tmp_irms_radio2g_day  a 
            SET label_cn=  (
                            SELECT userlabel 
                            FROM tcc_ne_frame b
                            WHERE a.int_id = b.ne_id
                            AND b.ne_type=300
                            AND b.confirmed not in(2,5)
                            )
            WHERE EXISTS( 
                        SELECT 1 
                        FROM tcc_ne_frame b 
                        WHERE a.int_id = b.ne_id 
                        AND b.ne_type=300 
                        AND b.confirmed not in(2,5)
                        );


        SELECT sitecode.sitecode, cell.first_result, sitecode.network_type, sum( cell.tch_traffic) traffic
            FROM nrmdb:irms_radio_cell sitecode , $tmp_irms_radio2g_day  cell
            WHERE sitecode.label_cn = cell.label_cn
            AND sitecode.network_type = '$gsm_type'
            GROUP BY 1,2,3
      INTO TEMP $tmp_irms2npm_stcode_traffic with no log;

            create index ix2_tmp_irms2npm_stcode_traffic on $tmp_irms2npm_stcode_traffic (sitecode);

        UPDATE irms2npm_stcode_traffic a set tch_traffic= 
        (
            SELECT traffic
            FROM $tmp_irms2npm_stcode_traffic b
            WHERE a.sitecode = b.sitecode
            AND a.first_result = '$start_date'
            AND b.network_type = '$gsm_type'

        )
        WHERE EXISTS
        (
            SELECT 1
            FROM $tmp_irms2npm_stcode_traffic b
            WHERE a.sitecode = b.sitecode
            AND a.first_result = '$start_date'
            AND b.network_type = '$gsm_type'

        );


        SELECT sitecode,sum(tch_traffic) num
            FROM irms2npm_stcode_traffic
            WHERE first_result between '$detials_time' and  '$start_date'
            GROUP BY 1
        INTO temp $tmp_sitecode_num with no log ;

        CREATE INDEX ix0_$tmp_sitecode_num on $tmp_sitecode_num( sitecode);

        UPDATE irms2npm_stcode_traffic a
            SET last_traffic = ( 
                            SELECT num
                            FROM $tmp_sitecode_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_sitecode_num b 
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );


        SELECT sitecode,traffic
            FROM irms2npm_stcode_traffic
            WHERE first_result = '$detials_time'

        INTO temp $tmp_last_num with no log ;

        CREATE INDEX ix0_$tmp_last_num on $tmp_last_num( sitecode);

        UPDATE irms2npm_stcode_traffic a
            SET traffic = ( 
                            SELECT traffic
                            FROM $tmp_last_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_last_num b   
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );

        };


        $scm->set_sql_note(" Summary $gsm_type sitecode!");
        $scm->execute_batch($sql);
        $scm->drop_temp_table($tmp_irms_radio2g_day,$tmp_sitecode_num,$tmp_irms2npm_stcode_traffic,$tmp_last_num);

}

sub LTE_cell_sum()
{
$scm->set_sql_note("Start $lte_type cell_sum");

my $sql = qq 
   {
        CREATE TABLE $tmp_irms_radio4g_day       
                    (
                        int_id integer,
                        first_result datetime year to second,
                        label_cn varchar(255),
                        upoct float
                    );
        CREATE INDEX ix0_irms_radio2g_day on $tmp_irms_radio4g_day (int_id,label_cn) ;


        INSERT INTO $tmp_irms_radio4g_day  (int_id ,first_result,upoct)
            SELECT ne_id,first_result,up_oct_ul+up_oct_dl
            FROM tpa_eutrancell_q_sum
            WHERE first_result='$start_time'
            AND sum_level=1
            AND ne_type=8105
            AND busy_type=0;


        UPDATE $tmp_irms_radio4g_day  a 
            SET label_cn=  (
                            SELECT userlabel 
                            FROM tcc_ne_frame b
                            WHERE a.int_id = b.ne_id
                            AND b.ne_type=8105
                            AND b.confirmed not in(2,5)
                            )
            WHERE EXISTS( 
                        SELECT 1 
                        FROM tcc_ne_frame b 
                        WHERE a.int_id = b.ne_id 
                        AND b.ne_type=8105 
                        AND b.confirmed not in(2,5)
                        );


        SELECT sitecode.sitecode, cell.first_result, sitecode.network_type, sum( cell.upoct) traffic
            FROM nrmdb:irms_radio_cell sitecode , $tmp_irms_radio4g_day  cell
        WHERE sitecode.label_cn = cell.label_cn
                AND sitecode.network_type = '$lte_type'
                GROUP BY 1,2,3
        INTO TEMP $tmp_irms2npm_stcode_traffic with no log;

        CREATE INDEX ix2_tmp_irms2npm_stcode_traffic on $tmp_irms2npm_stcode_traffic (sitecode);

        UPDATE irms2npm_stcode_traffic a set upoct= 
        (
            SELECT traffic
            FROM $tmp_irms2npm_stcode_traffic b
            WHERE a.sitecode = b.sitecode
            and a.first_result = '$start_date'
            and b.network_type = '$lte_type'

        )
        WHERE EXISTS
        (
            SELECT 1
            FROM $tmp_irms2npm_stcode_traffic b
            WHERE a.sitecode = b.sitecode
            and a.first_result = '$start_date'
            and b.network_type = '$lte_type'

        );


        SELECT sitecode,sum(upoct) num
            FROM irms2npm_stcode_traffic
            WHERE first_result between '$detials_time' and  '$start_date'
            GROUP BY 1
        INTO temp $tmp_sitecode_num with no log ;

        CREATE INDEX ix0_$tmp_sitecode_num on $tmp_sitecode_num( sitecode);

        UPDATE irms2npm_stcode_traffic a
            SET last_oct = ( 
                            SELECT num
                            FROM $tmp_sitecode_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_sitecode_num b 
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );                          


        SELECT sitecode,oct
            FROM irms2npm_stcode_traffic
            WHERE first_result = '$detials_time'

        INTO temp $tmp_last_num with no log ;

        CREATE INDEX ix0_$tmp_last_num on $tmp_last_num( sitecode);

        UPDATE irms2npm_stcode_traffic a
            SET oct = ( 
                            SELECT oct
                            FROM $tmp_last_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_last_num b  
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );

        };

        $scm->set_sql_note(" Summary $lte_type sitecode!");
        $scm->execute_batch($sql);
        $scm->drop_temp_table($tmp_irms_radio4g_day,$tmp_sitecode_num,$tmp_irms2npm_stcode_traffic,$tmp_last_num);

}
sub Month_sum
{
my $st = shift;
my $et = shift;

$st = TimeOpt::CFtime("MM/DD/YYYY",$st);
$et = TimeOpt::CFtime("MM/DD/YYYY",$et);

$scm->set_sql_note("Start Month_sum cell_sum");
my $sql = qq 
    {
        SELECT sitecode,sum(upoct) lte_num,sum(tch_traffic) gsm_num
            FROM irms2npm_stcode_traffic
            WHERE first_result between '$st' and  '$et'
            GROUP BY 1
        INTO temp $tmp_sitecode_num with no log ;

        CREATE INDEX ix0_$tmp_sitecode_num on $tmp_sitecode_num( sitecode);

        UPDATE irms2npm_stcode_traffic a
            SET oct = ( 
                            SELECT lte_num
                            FROM $tmp_sitecode_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_sitecode_num b 
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );


        UPDATE irms2npm_stcode_traffic a
            SET traffic = ( 
                            SELECT gsm_num
                            FROM $tmp_sitecode_num b  
                            WHERE a.sitecode = b.sitecode
                            AND a.first_result = '$start_date'
                            )
            WHERE EXISTS ( 
                        SELECT 1 
                        FROM $tmp_sitecode_num b 
                        WHERE a.sitecode = b.sitecode 
                        AND a.first_result = '$start_date'
                        );
    };

    $scm->execute_batch($sql);
    $scm->drop_temp_table($tmp_sitecode_num);

}

$scm->end();

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2018-05-28 07:45
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示