@ -7,6 +7,7 @@ import com.nmgs.entity.DivOutPortDroad;
import com.nmgs.mapper.DivOutPortDroadMapper ;
import com.nmgs.mapper.Mapper ;
import com.nmgs.service.IDivOutPortDroadSerive ;
import com.nmgs.service.ISelectData ;
import com.nmgs.util.LogUtil ;
import com.nmgs.util.PropertiesUtil ;
import com.nmgs.util.PubTools ;
@ -24,6 +25,8 @@ public class DivOutPortDroadaImpl implements IDivOutPortDroadSerive {
public DivOutPortDroadMapper divOutPortDroadMapper ;
@Autowired
public Mapper mapperI ;
@Autowired
public ISelectData iSelectData ;
@Override
public Page < DivOutPortDroad > getDivDataTableList ( Map < String , Object > params ) {
//从配置文件中读取数据库连接类型
@ -33,249 +36,83 @@ public class DivOutPortDroadaImpl implements IDivOutPortDroadSerive {
Integer pageSize = ( Integer ) params . get ( "pageSize" ) ;
Page < DivOutPortDroad > page = new Page < > ( pageNum , pageSize ) ;
page = divOutPortDroadMapper . getDivDataTableList ( page , params ) ;
//获取数据
List < DivOutPortDroad > records = page . getRecords ( ) ;
//解析里面字典数据
for ( DivOutPortDroad divOutPortDroad : records ) {
String vehicleId = divOutPortDroad . getVehicleid ( ) . toString ( ) ;
divOutPortDroad . setVehicleclassName ( iSelectData . getSelect ( "VECHECLASS" , divOutPortDroad . getVehicleclass ( ) ) ) ;
divOutPortDroad . setVehicletypeName ( iSelectData . getSelect ( "VECHETYPE" , divOutPortDroad . getVehicletype ( ) . toString ( ) ) ) ;
divOutPortDroad . setExitfeetypeName ( iSelectData . getSelect ( "EXITFEETYPE" , divOutPortDroad . getExitfeetype ( ) . toString ( ) ) ) ;
divOutPortDroad . setRoadName ( iSelectData . getSelect ( "ROAD" , divOutPortDroad . getDroadno ( ) . toString ( ) ) ) ;
if ( ! PubTools . isNull ( vehicleId ) ) {
divOutPortDroad . setVehicleid ( vehicleId . substring ( 0 , vehicleId . length ( ) - 1 ) + iSelectData . getSelect ( "PLATECOLOR" , vehicleId . substring ( vehicleId . length ( ) - 1 ) ) ) ;
}
}
page . setRecords ( records ) ;
return page ;
}
public List getDivDataTableListSql ( String classDate , String queryFilter , Integer start , Integer end ,
JSONArray whereParams ) {
List list = new ArrayList ( ) ;
List listRet = new ArrayList ( ) ;
String sql = "" ;
String dbType = PropertiesUtil . getValue ( "DBType" ) ;
String resultSql = "SELECT \n" +
"\ttt.rn,\n" +
"\ttt.ID,\n" +
"\ttt.PASSID,\n" +
"\t tt.PAYFEE AS PAYFEE,\n" +
"\ttt.FEE AS FEE,\n" +
"\ttt.DISCOUNTFEE,\n" +
"\ttt.SPLITFEE AS SPLITFEE,\n" +
"\ttt.CLEARDATE,\n" +
"\ttt.ENTIME,\n" +
"\ttt.EXTIME,\n" +
"\ttt.ENTOLLSTATIONNAME,\n" +
"\ttt.EXTOLLSTATIONNAME,\n" +
"\ttt.ENPOINTID,\n" +
"\ttt.EXPOINTID,\n" +
"\tCONCAT(substr( tt.VEHICLEID, 1, length(tt.VEHICLEID)-1),pt.TEXT) as VEHICLEID ,\n" +
"\ttt.SPLITPROVINCE,\n" +
"\ttt.DIVDATE,\n" +
"\ttt.RESULT,\n" +
"\ttt.DIVDETAIL,\n" +
"\ttt.VEHICLECLASS,\n" +
"\ttt.DROADNO,\n" +
"\ttt.DROADFEE,\n" +
"\trt.ROADNAME,\n" +
"\tttd.text AS VEHICLETYPENAME,\n" +
"\tvt.text as VEHICLECLASSName,\n" +
"\td2.TEXT AS EXITFEETYPENAME,\n" +
"\ttt.VEHICLETYPE " ;
String startsql = "SELECT \n" +
"\tss.rn,\n" +
"\tss.ID,\n" +
"\tss.PASSID,\n" +
"\t ss.PAYFEE AS PAYFEE,\n" +
"\tss.FEE AS FEE,\n" +
"\tss.DISCOUNTFEE,\n" +
"\tss.SPLITFEE AS SPLITFEE,\n" +
"\tss.CLEARDATE,\n" +
"\tss.ENTIME,\n" +
"\tss.EXTIME,\n" +
"\tss.ENTOLLSTATIONNAME,\n" +
"\tss.EXTOLLSTATIONNAME,\n" +
"\tss.ENPOINTID,\n" +
"\tss.EXPOINTID,\n" +
"\tss.VEHICLEID as VEHICLEID ,\n" +
"\tss.SPLITPROVINCE,\n" +
"\tss.DIVDATE,\n" +
"\tss.RESULT,\n" +
"\tss.DIVDETAIL,\n" +
"\tss.VEHICLECLASS,\n" +
"\tss.DROADNO,\n" +
"\tss.DROADFEE,\n" +
"\tss.EXITFEETYPE AS EXITFEETYPE,\n" +
"\tss.VEHICLETYPE " ;
String startsqlPage = "SELECT " ;
if ( "2" . equals ( dbType ) ) {
startsqlPage + = "\tROWNUM AS rn,\n" ;
} else {
startsqlPage + = "\t (row_number() over(partition by t.classdate))-1 AS rn,\n" ;
}
startsqlPage + = "\tt.ID,\n" +
"\tt.TOLLPROVINCEID,\n" +
"\tt.PASSID,\n" +
"\t t.PAYFEE/100 AS PAYFEE,\n" +
"\t t.FEE/100 AS FEE,\n" +
"\t t.DISCOUNTFEE/100 AS DISCOUNTFEE,\n" +
"\tt.SPLITFEE/100 AS SPLITFEE,\n" +
"\tt.ENTIME,\n" +
"\tt.EXTIME,\n" +
"\tt.ENTOLLSTATIONNAME,\n" +
"\tt.EXTOLLSTATIONNAME,\n" +
"\tt.ENPOINTID,\n" +
"\tt.EXPOINTID,\n" +
"\tt.EXITFEETYPE,\n" +
// "\tto_char(t.SPLITPROVINCE) AS SPLITPROVINCE,\n" +
"\t'' AS SPLITPROVINCE,\n" +
"\tt.CLEARDATE,\n" +
"\tt.DIVDATE,\n" +
"\tt.RESULT,\n" +
// "\tto_char(t.DIVDETAIL) AS DIVDETAIL,\n" +
"\t'' AS DIVDETAIL,\n" +
"\tt.VEHICLEID as VEHICLEID,\n" +
"\tt.VEHICLECLASS,\n" +
"\tt.DROADNO,\n" +
"\tt.DROADFEE/100 AS DROADFEE,\n" +
"\tt.VEHICLETYPE AS VEHICLETYPE" ;
String mysqlResult = "select\n" +
"\t\t\t(row_number() over(partition by t.CLEARDATE))-1 as rn,\n" +
"\t\t\tt.ID,\n" +
"\t\t\tt.PASSID,\n" +
"\t\t\tt.TOLLPROVINCEID as TOLLPROVINCEID,\n" +
"\t\t\tt.PAYFEE/100 as PAYFEE,\n" +
"\t\t\tt.FEE/100 AS FEE,\n" +
"\t\t\tt.DISCOUNTFEE/100 as DISCOUNTFEE,\n" +
// "\t\t\tto_char(t.DIVDETAIL) AS DIVDETAIL,\n" +
// "\t\t\tto_char(t.SPLITPROVINCE) AS SPLITPROVINCE,\n" +
"\t\t\tt.CLEARDATE,\n" +
"\t\t\tt.ENTIME,\n" +
"\t\t\tt.EXTIME,\n" +
"\t\t\tt.ENTOLLSTATIONNAME,\n" +
"\t\t\tt.EXTOLLSTATIONNAME,\n" +
"\t\t\tt.ENPOINTID,\n" +
"\t\t\tt.EXPOINTID,\n" +
"\t\t\tCONCAT(substr( t.VEHICLEID, 1, length(t.VEHICLEID)-1), pt.TEXT) as VEHICLEID,\n" +
"\t\t\tt.VEHICLECLASS,\n" +
"\t\t\tt.VEHICLETYPE as VEHICLETYPE,\n" +
"\t\t\tttd.text as VEHICLETYPENAME,\n" +
"\t\t\tvt.text as VEHICLECLASSName,\n" +
"\t\t\tt.DIVDATE ,\n" +
"\t\t\tt.RESULT as RESULT,\n" +
"\t\t\tt.DROADNO as DROADNO,\n" +
"\trt.ROADNAME,\n" +
"\t\t\tt.DROADFEE/100 as DROADFEE,\n" +
"\t\t\td2.TEXT as EXITFEETYPENAME" ;
String endSql = " FROM\n" +
" DIV_OUT_PORT_DROAD t @JOINCONDITION@" +
"WHERE 1=1 \n" ;
if ( ! PubTools . isNull ( classDate ) ) {
endSql + = "\t AND t.CLEARDATE = to_date( '" + classDate + "', 'yyyy-mm-dd' ) \n" ;
}
@Override
public List getDivDetail ( Map < String , Object > mapParam ) {
List list = new ArrayList ( ) ;
String divDetail = mapParam . get ( "divDetail" ) . toString ( ) ;
String droadNo = mapParam . get ( "droadNo" ) . toString ( ) ;
try {
if ( whereParams . size ( ) > 0 ) {
endSql + = solveSearchJSOn ( whereParams , queryFilter ) ;
String sql = "select ft.length/1000 as LENGTH," +
"ft.NAME as FEEUNITNAME from \n" +
"FEEUNIT_TABLE ft \n" +
"where ft.ID='@PARAM@'" ;
if ( ! PubTools . isNull ( divDetail ) ) {
JSONObject jsonObject1 = JSONObject . parseObject ( divDetail ) ;
Object detail = jsonObject1 . get ( "detail" ) ;
if ( ! PubTools . isEmpty ( detail ) ) {
JSONArray jsonArray = ( JSONArray ) detail ;
for ( int i = 0 ; i < jsonArray . size ( ) ; i + + ) {
JSONObject jsonObject = jsonArray . getJSONObject ( i ) ;
String roadno = jsonObject . get ( "roadno" ) . toString ( ) ;
if ( droadNo . equals ( roadno ) ) {
String feeunitid = jsonObject . get ( "feeunitid" ) . toString ( ) ;
String stano = jsonObject . get ( "stano" ) . toString ( ) ;
double fee = PubTools . doubleSave2 ( Double . parseDouble ( jsonObject . get ( "fee" ) . toString ( ) ) / 100 ) ;
String sqlT = sql . replace ( "@PARAM@" , feeunitid ) ;
Map < String , Object > select1 = new HashMap < > ( ) ;
List temp = this . mapperI . selectforlist ( sqlT ) ;
if ( temp ! = null & & temp . size ( ) > 0 ) {
select1 = ( Map < String , Object > ) temp . get ( 0 ) ;
}
//查询单元名称
String feeUnitName = "" ; //计费单元名称
String lengthD = "" ;
if ( ! PubTools . isEmpty ( select1 ) ) {
for ( String str : select1 . keySet ( ) ) {
if ( "FEEUNITNAME" . equals ( str ) ) {
feeUnitName = ( ! PubTools . isEmpty ( select1 . get ( str ) ) ? select1 . get ( str ) . toString ( ) : "" ) ;
} else if ( "LENGTH" . equals ( str ) ) {
lengthD = ( ! PubTools . isEmpty ( select1 . get ( str ) ) ? select1 . get ( str ) . toString ( ) : "" ) ;
}
}
}
JSONObject ret = new JSONObject ( ) ;
ret . put ( "feeunitid" , feeUnitName ) ;
ret . put ( "stano" , "" ) ;
ret . put ( "fee" , fee ) ;
ret . put ( "lengthD" , lengthD ) ;
list . add ( ret ) ;
}
if ( start > = 0 & & end > 0 ) {
if ( "2" . equals ( dbType ) ) { //oracle
sql = resultSql + " from (" + startsql + " from (" + startsqlPage + endSql + " and ROWNUM <= " + end + ")ss where 1=1 AND ss.rn >= " + start + " )tt " ;
sql + = " LEFT JOIN VEHICLECLASS_TEXT vt ON ( tt.VEHICLECLASS = vt.value ) " +
" LEFT JOIN type_text ttd ON ( tt.VEHICLETYPE = ttd.value ) " +
" left join exitfeetype_text d2 on(tt.exitfeetype = d2.value)" +
" left join ROAD_TABLE rt on(tt.DROADNO = rt.ROADNO)" +
" left join PLATECOLOR_TEXT pt on(pt.value = substr( tt.VEHICLEID, length(tt.VEHICLEID))) " +
" order by tt.rn " ;
sql = sql . replace ( "@JOINCONDITION@" , "" ) ;
} else {
sql = mysqlResult + endSql + " order by rt.ROADNAME limit " + start + "," + end + " " ;
String joinCondition = " LEFT JOIN VEHICLECLASS_TEXT vt ON ( ss.VEHICLECLASS = vt.value ) " +
" LEFT JOIN type_text ttd ON ( ss.VEHICLETYPE = ttd.value ) " +
" left join exitfeetype_text d2 on(ss.exitfeetype = d2.value)" +
" left join PLATECOLOR_TEXT pt on(pt.value = substr( t.VEHICLEID, length(t.VEHICLEID)))" +
" left join ROAD_TABLE rt on(ss.DROADNO = rt.ROADNO)" ;
sql = sql . replace ( "@JOINCONDITION@" , joinCondition ) ;
}
} else {
endSql = endSql . replace ( "@JOINCONDITION@" , "" ) ;
sql = " select count(1) as TOTALCOUNT " + endSql ;
}
LogUtil . WriteLog_Info ( "sql===执行开始" + PubTools . getCurrentDate ( ) , "DivPassDataImpl" ) ;
list = this . mapperI . selectforlist ( sql ) ;
LogUtil . WriteLog_Info ( "sql===执行结束" + PubTools . getCurrentDate ( ) , "DivPassDataImpl" ) ;
if ( list . size ( ) > 0 ) {
if ( PubTools . isEmpty ( list . get ( 0 ) ) ) {
list = new ArrayList ( ) ;
}
}
} catch ( Exception e ) {
} catch ( Exception e ) {
e . printStackTrace ( ) ;
LogUtil . WriteLog_Error ( "查询数据失败===" + e . getMessage ( ) , "DivPassDataImpl" ) ;
return new ArrayList ( ) ;
LogUtil . WriteLog_Error ( "解析拆分详情出错:=====" + e . getMessage ( ) , "DivOutPortDroadaImpl" ) ;
}
return list ;
}
private String solveSearchJSOn ( JSONArray params , String queryFilter ) {
String querySql = "" ;
if ( params . size ( ) > 0 ) {
for ( int k = 0 ; k < params . size ( ) ; k + + ) {
JSONObject retO = ( JSONObject ) params . get ( k ) ;
String colName = retO . get ( "colName" ) . toString ( ) ;
if ( retO . get ( "value" ) instanceof String | | retO . get ( "value" ) instanceof Integer ) {
String val = retO . get ( "value" ) . toString ( ) ;
if ( ! PubTools . isNull ( val ) ) {
if ( colName . equals ( "vecheType" ) ) {
querySql + = "\tAND t.vehicletype = ( SELECT value FROM type_text WHERE text = '" + val + "' ) " ;
} else if ( colName . equals ( "sPassId" ) ) {
querySql + = "\t AND t.passid = '" + val + "' " ;
} else if ( colName . equals ( "enSTANAME" ) ) {
querySql + = "\tAND t.GPA_ENTOLLSTATIONNAME like '%" + val + "%'" ;
} else if ( colName . equals ( "exSTANAME" ) ) {
querySql + = "\tAND t.GPA_EXTOLLSTATIONNAME like '%" + val + "%'" ;
} else if ( colName . equals ( "sVEHICLEID" ) ) {
querySql + = "\tAND t.VEHICLEID = '" + val + "' " ;
} else if ( colName . equals ( "sVecheType" ) ) {
querySql + = "\tAND t.vehicletype = '" + val + "' " ;
} else if ( colName . equals ( "sVecheClass" ) ) {
querySql + = "\tAND t.VEHICLECLASS ='" + val + "' " ;
} else if ( colName . equals ( "sExitfeeType" ) ) {
querySql + = "\tAND t.EXITFEETYPE ='" + val + "' " ;
} else if ( colName . equals ( "SENSTANAMEID" ) ) {
querySql + = "\tAND t.ENPOINTID in (select st.GBId from name_TABLE nt,SETUP_TABLE st where substr(st.GBId,1,length(st.GBId)-7)=nt.GBSTATIONID AND nt.STANO = '" + val + "') " ;
} else if ( colName . equals ( "SEXSTANAMEID" ) ) {
querySql + = "\tAND t.EXPOINTID in (select st.GBId from name_TABLE nt,SETUP_TABLE st where substr(st.GBId,1,length(st.GBId)-7)=nt.GBSTATIONID AND nt.STANO = '" + val + "') " ;
} else if ( colName . equals ( "sStatus" ) ) {
querySql + = "\tAND t.STATUS ='" + val + "' " ;
} else if ( colName . equals ( "sBak1" ) ) {
if ( "v" . equals ( val ) ) {
querySql + = "\tAND t.VEHICLECLASS > 0 AND t.BAK1 !='w'" ;
} else if ( "b" . equals ( val ) | | "k" . equals ( val ) ) {
querySql + = "\tAND t.BAK1 ='" + val + "' AND t.VEHICLECLASS=0" ;
} else if ( "w" . equals ( val ) ) {
querySql + = "\tAND t.BAK1 ='" + val + "'" ;
}
} else if ( colName . equals ( "specialEvent" ) ) {
if ( "1" . equals ( queryFilter ) ) {
querySql + = "\tAND FIND_IN_SET( '" + val + "',t.bak2) >0 " ;
} else if ( "2" . equals ( queryFilter ) ) {
querySql + = "\tAND FIND_IN_SET( '" + val + "',t.bak2) <=0 " ;
}
}
}
} else if ( retO . get ( "value" ) instanceof JSONArray ) {
JSONArray valList = ( JSONArray ) retO . get ( "value" ) ;
if ( valList . size ( ) > 0 ) {
if ( colName . equals ( "exitType" ) ) {
String querylist = String . join ( ", " , JSONObject . parseArray ( JSONObject . toJSONString ( valList ) , String . class ) ) ;
if ( "1" . equals ( queryFilter ) ) {
querySql + = "\tAND t.EXITFEETYPE in(" + querylist + ") " ;
} else if ( "2" . equals ( queryFilter ) ) {
querySql + = "\tAND t.EXITFEETYPE not in(" + querylist + ") " ;
}
} else if ( colName . equals ( "specialEvent" ) ) {
String querylist = String . join ( ", " , JSONObject . parseArray ( JSONObject . toJSONString ( valList ) , String . class ) ) ;
if ( "1" . equals ( queryFilter ) ) {
querySql + = "\tAND FIND_IN_SET( " + querylist + ",t.bak2) >0 " ;
} else if ( "2" . equals ( queryFilter ) ) {
querySql + = "\tAND FIND_IN_SET( " + querylist + ",t.bak2) <=0 " ;
}
}
}
}
}
}
return querySql ;
}
}