diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java index e69cc2c18..828683000 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java @@ -369,8 +369,12 @@ public class PersonPileController extends BaseController { try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - pileReservationInfoService.updateReservation(dto); - response = new RestApiResponse<>(); + int i = pileReservationInfoService.updateReservation(dto); + if (i > 0) { + response = new RestApiResponse<>(); + } else { + response = new RestApiResponse<>(ReturnCodeEnum.CODE_UPDATE_RESERVED_STATUS_ERROR.getValue(), ReturnCodeEnum.CODE_UPDATE_RESERVED_STATUS_ERROR.getLabel() + ": 充电桩返回修改失败"); + } } catch (BusinessException e) { logger.error("修改预约充电信息error, params:{}", dto, e); response = new RestApiResponse<>(e.getCode(), e.getMessage()); diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java index 4289206a5..bd112af4c 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java @@ -5,6 +5,7 @@ import com.jsowell.adapay.dto.BalancePaymentRequestDTO; import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; @@ -13,10 +14,7 @@ import com.jsowell.pile.domain.AdapayMemberAccount; import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.ykcCommond.ReservationChargingCommand; -import com.jsowell.pile.dto.ApplyRefundDTO; -import com.jsowell.pile.dto.CarVinDTO; -import com.jsowell.pile.dto.QueryOrderDTO; -import com.jsowell.pile.dto.SettleOrderReportDTO; +import com.jsowell.pile.dto.*; import com.jsowell.pile.service.*; import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; @@ -74,6 +72,16 @@ public class TempController extends BaseController { @Autowired private PileRemoteService pileRemoteService; + /** + * 对时 + * http://localhost:8080/temp/proofreadTimeTest + */ + @PostMapping("/proofreadTimeTest") + public AjaxResult proofreadTimeTest(@RequestBody QueryPileDTO queryPileDTO) { + pileRemoteService.proofreadTime(queryPileDTO.getPileSn()); + return AjaxResult.success(); + } + /** * 预约充电测试 * http://localhost:8080/temp/reservedChargingTest diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 888a4c9f8..9ed70840f 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -1166,122 +1166,767 @@ public class SpringBootTestController { private List getPaymentIdList1() { List list = Lists.newArrayList(); + list.add("002212024063019153910653446823208845312"); + list.add("002212024063019333910653451354565480448"); + list.add("002212024063020120010653461003825848320"); + list.add("002212024063020164610653462203656101888"); + list.add("002212024063021540510653486694827216896"); + list.add("002212024063022090910653490489297354752"); + list.add("002212024063023152510653507166029918208"); + list.add("002212024070100032010653519223591591936"); + list.add("002212024070100070510653520164398272512"); + list.add("002212024070100100910653520939317780480"); + list.add("002212024070101520910653546608303972352"); + list.add("002212024070107295910653631624618889216"); + list.add("002212024070108141010653642747079180288"); + list.add("002212024070109504010653667030322298880"); + list.add("002212024070111252110653690855937368064"); + list.add("002212024070112022410653700181202190336"); + list.add("002212024070114425510653740575734018048"); + list.add("002212024070117300010653782623067541504"); + list.add("002212024070117420010653785643043704832"); + list.add("002212024070118002210653790265628086272"); + list.add("002212024070119182010653809888832753664"); + list.add("002212024070119363410653814474845339648"); + list.add("002212024070120195710653825394154700800"); + list.add("002212024070121081110653837532633198592"); + list.add("002212024070122582010653865253213540352"); + list.add("002212024070123234110653871633297018880"); + list.add("002212024070123250310653871977170296832"); + list.add("002212024070200003010653880896310394880"); + list.add("002212024070200085910653883033759162368"); + list.add("002212024070200300810653888354992791552"); + list.add("002212024070208370510654010898954469376"); + list.add("002212024070210403310654041973098725376"); + list.add("002212024070211281710654053983767203840"); + list.add("002212024070211551710654060777452396544"); + list.add("002212024070211594410654061899120934912"); + list.add("002212024070213274310654084039234379776"); + list.add("002212024070215594910654122315480485888"); + list.add("002212024070217441810654148612768575488"); + list.add("002212024070217501510654150108051107840"); + list.add("002212024070218042710654153683651616768"); + list.add("002212024070218285810654159850489430016"); + list.add("002212024070218333910654161030190116864"); + list.add("002212024070218511810654165472050327552"); + list.add("002212024070219210810654172982117371904"); + list.add("002212024070220350910654191607741448192"); + list.add("002212024070221574610654212396526522368"); + list.add("002212024070222331610654221330641330176"); + list.add("002212024070222423010654223656797429760"); + list.add("002212024070222484110654225211178000384"); + list.add("002212024070223093010654230450027110400"); + list.add("002212024070300391810654253051071258624"); + list.add("002212024070301091910654260603666358272"); + list.add("002212024070307070010654350616367173632"); + list.add("002212024070308093310654366360100323328"); + list.add("002212024070313312810654447370082865152"); + list.add("002212024070313331010654447800708177920"); + list.add("002212024070313410210654449777592664064"); + list.add("002212024070313412210654449862338576384"); + list.add("002212024070315331910654478037165064192"); + list.add("002212024070316305710654492540400992256"); + list.add("002212024070316321810654492878030213120"); + list.add("002212024070317494010654512352134430720"); + list.add("002212024070317585210654514664594317312"); + list.add("002212024070317595310654514920050614272"); + list.add("002212024070318205410654520211465994240"); + list.add("002212024070318304310654522682393120768"); + list.add("002212024070318453010654526401123450880"); + list.add("002212024070318464410654526710800498688"); + list.add("002212024070319151110654533871735717888"); + list.add("002212024070319205510654535312017399808"); + list.add("002212024070319410910654540406954569728"); + list.add("002212024070320055210654546626492547072"); + list.add("002212024070320075510654547139866599424"); + list.add("002212024070320494410654557664153866240"); + list.add("002212024070322065210654577075991044096"); + list.add("002212024070322463310654587064410398720"); + list.add("002212024070322500410654587946865631232"); + list.add("002212024070323055310654591927182647296"); + list.add("002212024070323083110654592592834088960"); + list.add("002212024070323182210654595071746613248"); + list.add("002212024070400043510654606700514279424"); + list.add("002212024070401070110654622413509582848"); + list.add("002212024070411202610654776785829150720"); + list.add("002212024070411452510654783073156247552"); + list.add("002212024070414215310654822445935337472"); + list.add("002212024070415295710654839576183922688"); + list.add("002212024070415352210654840942190563328"); + list.add("002212024070415533810654845536025968640"); + list.add("002212024070416200710654852201766096896"); + list.add("002212024070417134910654865715534544896"); + list.add("002212024070417244110654868449402511360"); + list.add("002212024070418125410654880586149617664"); + list.add("002212024070418211110654882671140974592"); + list.add("002212024070418221110654882919225192448"); + list.add("002212024070418531410654890734787076096"); + list.add("002212024070419015410654892917545984000"); + list.add("002212024070419271510654899294473785344"); + list.add("002212024070420544210654921301937737728"); + list.add("002212024070422553510654951724405956608"); + list.add("002212024070422585010654952541457440768"); + list.add("002212024070423031110654953637526859776"); + list.add("002212024070500321510654976053021728768"); + list.add("002212024070507361410655082748140490752"); + list.add("002212024070507414910655084155359305728"); + list.add("002212024070507540210655087229685989376"); + list.add("002212024070508461810655100382228094976"); + list.add("002212024070509343710655112542049214464"); + list.add("002212024070509372810655113259535613952"); + list.add("002212024070512023910655149796289646592"); + list.add("002212024070512182110655153748099960832"); + list.add("002212024070513131710655167572507729920"); + list.add("002212024070516282010655216656372092928"); + list.add("002212024070517193210655229540392153088"); + list.add("002212024070517242110655230753206145024"); + list.add("002212024070518071010655241528445198336"); + list.add("002212024070518234510655245703651835904"); + list.add("002212024070518331910655248109020557312"); + list.add("002212024070519112710655257706414387200"); + list.add("002212024070519125410655258073885941760"); + list.add("002212024070519240710655260893953613824"); + list.add("002212024070519255010655261328764526592"); + list.add("002212024070519303310655262514976915456"); + list.add("002212024070519330510655263150606909440"); + list.add("002212024070519392610655264748257562624"); + list.add("002212024070520405010655280199963615232"); + list.add("002212024070521091010655287331636322304"); + list.add("002212024070521111110655287840426328064"); + list.add("002212024070521545210655298833732075520"); + list.add("002212024070522281210655307219839967232"); + list.add("002212024070522334310655308609772818432"); + list.add("002212024070522413110655310572729257984"); + list.add("002212024070522484310655312385309196288"); + list.add("002212024070600115910655333338944000000"); + list.add("002212024070601465610655357233207402496"); + list.add("002212024070608150310655454906787037184"); + list.add("002212024070609443210655477425073000448"); + list.add("002212024070609470210655478055367917568"); + list.add("002212024070610025010655482031497805824"); + list.add("002212024070610133310655484726802616320"); + list.add("002212024070611124110655499611523194880"); + list.add("002212024070611492310655508845049634816"); + list.add("002212024070612244210655517734433681408"); + list.add("002212024070612522810655524719983185920"); + list.add("002212024070615224910655562557442396160"); + list.add("002212024070616444310655583170279395328"); + list.add("002212024070617184010655591713568108544"); + list.add("002212024070617594610655602054681550848"); + list.add("002212024070618121310655605190602571776"); + list.add("002212024070618280810655609193977581568"); + list.add("002212024070618344710655610866438918144"); + list.add("002212024070619121910655620313005850624"); + list.add("002212024070619292710655624624479141888"); + list.add("002212024070620475410655644368126713856"); + list.add("002212024070621285010655654667959623680"); + list.add("002212024070622032910655663388524433408"); + list.add("002212024070622133210655665917259415552"); + list.add("002212024070622494410655675027426115584"); + list.add("002212024070622531710655675919249608704"); + list.add("002212024070622532710655675964148113408"); + list.add("002212024070623375810655687168240619520"); + list.add("002212024070623571010655691996148473856"); + list.add("002212024070701064310655709501076217856"); + list.add("002212024070703170210655742298149986304"); + list.add("002212024070711241010655864885930844160"); + list.add("002212024070711333910655867272184057856"); + list.add("002212024070711391210655868668839624704"); + list.add("002212024070711464610655870576101601280"); + list.add("002212024070712342910655882584466964480"); + list.add("002212024070713145110655892741667278848"); + list.add("002212024070714180110655908638340378624"); + list.add("002212024070714182810655908749871321088"); + list.add("002212024070714255410655910621177098240"); + list.add("002212024070714581210655918751400493056"); + list.add("002212024070715042010655920295677222912"); + list.add("002212024070716433010655945250131255296"); + list.add("002212024070716563110655948526360162304"); + list.add("002212024070717073910655951327763152896"); + list.add("002212024070717275510655956430003945472"); + list.add("002212024070719105510655982349233311744"); + list.add("002212024070720000710655994729787527168"); + list.add("002212024070720065010655996419065630720"); + list.add("002212024070720230310656000500815364096"); + list.add("002212024070720231410656000549828632576"); + list.add("002212024070720412810656005137347293184"); + list.add("002212024070720524610656007981028315136"); + list.add("002212024070721025310656010527680757760"); + list.add("002212024070721263210656016476817637376"); + list.add("002212024070722111310656027721786421248"); + list.add("002212024070723320610656048078178660352"); + list.add("002212024070800244810656061338556272640"); + list.add("002212024070801101010656072755464343552"); + list.add("002212024070801284310656077424099065856"); + list.add("002212024070812511910656249205153554432"); + list.add("002212024070812555110656250349805801472"); + list.add("002212024070813190810656256205966327808"); + list.add("002212024070814440510656277585945124864"); + list.add("002212024070818265710656333670815485952"); + list.add("002212024070818324110656335114252750848"); + list.add("002212024070818340910656335483692851200"); + list.add("002212024070818375310656336421887311872"); + list.add("002212024070819095910656344502896340992"); + list.add("002212024070819114910656344964292460544"); + list.add("002212024070819185610656346755184693248"); + list.add("002212024070819243810656348187279462400"); + list.add("002212024070819390110656351807508783104"); + list.add("002212024070821202610656377331394506752"); + list.add("002212024070822141410656390870672564224"); + list.add("002212024070822155610656391296960634880"); + list.add("002212024070822260210656393837772189696"); + list.add("002212024070822443310656398499647442944"); + list.add("002212024070822531210656400677518401536"); + list.add("002212024070823373910656411861952978944"); + list.add("002212024070823463010656414091182231552"); + list.add("002212024070823524210656415649555595264"); + list.add("002212024070912035710656599673915797504"); + list.add("002212024070912201710656603786087604224"); + list.add("002212024070915434410656654984798711808"); + list.add("002212024070918170510656693575173496832"); + list.add("002212024070918214610656694754481741824"); + list.add("002212024070918274610656696263882096640"); + list.add("002212024070918512910656702233019113472"); + list.add("002212024070918514810656702312949190656"); + list.add("002212024070919005010656704585385349120"); + list.add("002212024070919120010656707395706834944"); + list.add("002212024070919460810656715984938586112"); + list.add("002212024070919473210656716339923083264"); + list.add("002212024070919540110656717971815313408"); + list.add("002212024070920050110656720739976454144"); + list.add("002212024070920484110656731726689861632"); + list.add("002212024070921292110656741961891745793"); + list.add("002212024070921480410656746673746595840"); + list.add("002212024070922272610656756578458640384"); + list.add("002212024070922525910656763011069554688"); + list.add("002212024070923393210656774725237637120"); + list.add("002212024070923544210656778540210192384"); + list.add("002212024071000383510656789584638902272"); + list.add("002212024071010133010656934265967042560"); + list.add("002212024071011060810656947514322423808"); + list.add("002212024071012221210656966657260175360"); + list.add("002212024071012302010656968702566031360"); + list.add("002212024071013083510656978329889058816"); + list.add("002212024071015563010657020587005562880"); + list.add("002212024071016040010657022473409445888"); + list.add("002212024071017292010657043947560738816"); + list.add("002212024071017373010657046004543426560"); + list.add("002212024071018230510657057476182970368"); + list.add("002212024071018362410657060823931191296"); + list.add("002212024071019002110657066853582655488"); + list.add("002212024071019174310657071222014869504"); + list.add("002212024071020144710657085583465877504"); + list.add("002212024071020395010657091890486648832"); + list.add("002212024071021072710657098839364636672"); + list.add("002212024071021162410657101090939895808"); + list.add("002212024071021375810657106519018090496"); + list.add("002212024071021391210657106827129872384"); + list.add("002212024071022223010657117725882015744"); + list.add("002212024071023350710657136000491229184"); + list.add("002212024071100112610657145139130765312"); + list.add("002212024071109021710657278734080118784"); + list.add("002212024071111034110657309285941104640"); + list.add("002212024071112520110657336548354646016"); + list.add("002212024071113385310657348339878768640"); + list.add("002212024071115045910657370007443517440"); + list.add("002212024071115192510657373640100581376"); + list.add("002212024071115511710657381659649204224"); + list.add("002212024071116221610657389459108839424"); + list.add("002212024071117413510657409419432124416"); + list.add("002212024071117584910657413755782991872"); + list.add("002212024071118531310657427446852374528"); + list.add("002212024071119012510657429507929165824"); + list.add("002212024071119212510657434542920171520"); + list.add("002212024071119282410657436301489807360"); + list.add("002212024071119335110657437672744587264"); + list.add("002212024071119394610657439158669053952"); + list.add("002212024071119395910657439214293913600"); + list.add("002212024071120585810657459093215793152"); + list.add("002212024071121435210657470389454344192"); + list.add("002212024071122154510657478413626028032"); + list.add("002212024071122513010657487413303808000"); + list.add("002212024071123561410657503703519944704"); + list.add("002212024071200340710657513234679115776"); + list.add("002212024071202043410657536000580612096"); + list.add("002212024071204333010657573477580443648"); + list.add("002212024071211323310657678935035699200"); + list.add("002212024071211380410657680324959830016"); + list.add("002212024071213554910657714989515104256"); + list.add("002212024071214010010657716296226398208"); + list.add("002212024071217172810657765737572249600"); + list.add("002212024071217182110657765957822173184"); + list.add("002212024071218094110657778878196183041"); + list.add("002212024071218144710657780159988068352"); + list.add("002212024071218570810657790818915876864"); + list.add("002212024071219324010657799762957209600"); + list.add("002212024071219400110657801610545221632"); + list.add("002212024071220132610657810021746913280"); + list.add("002212024071220210810657811957216407552"); + list.add("002212024071221381110657831350571474944"); + list.add("002212024071221551810657835654929354752"); + list.add("002212024071222421510657847470173151232"); + list.add("002212024071222583910657851600559046656"); + list.add("002212024071223510910657864810678603776"); + list.add("002212024071300200310657872082335666176"); + list.add("002212024071300404210657877282689286144"); + list.add("002212024071300583010657881761235968000"); + list.add("002212024071302302910657904909738156032"); + list.add("002212024071307403610657982953855766528"); + list.add("002212024071309591010658017822784200704"); + list.add("002212024071312015010658048692860080128"); + list.add("002212024071312380310658057806120980480"); + list.add("002212024071316233510658114564513452032"); + list.add("002212024071316254810658115121511026688"); + list.add("002212024071316445110658119918843379712"); + list.add("002212024071317335010658132244744523776"); + list.add("002212024071317541010658137359831638016"); + list.add("002212024071319373410658163382800240640"); + list.add("002212024071319502610658166621430575104"); + list.add("002212024071320183010658173685240401920"); + list.add("002212024071320260710658175600118902784"); + list.add("002212024071320341010658177625419988992"); + list.add("002212024071320384010658178759129993216"); + list.add("002212024071320542710658182730569650176"); + list.add("002212024071320555710658183108601053184"); + list.add("002212024071321021310658184687082713088"); + list.add("002212024071322073110658201118324867072"); + list.add("002212024071322103610658201895744425984"); + list.add("002212024071322104610658201937978433536"); + list.add("002212024071322242710658205378722357248"); + list.add("002212024071322383910658208953166929920"); + list.add("002212024071323065510658216065751580672"); + list.add("002212024071323201810658219435336974336"); + list.add("002212024071323534810658227866867773440"); + list.add("002212024071401135710658248034367266816"); + list.add("002212024071402574710658274165264183296"); + list.add("002212024071409464210658377075400003584"); + list.add("002212024071410333610658388877494882304"); + list.add("002212024071411305410658403297631100928"); + list.add("002212024071415143610658459592126996480"); + list.add("002212024071416203610658476203262287872"); + list.add("002212024071416290210658478325575602176"); + list.add("002212024071416330210658479331466170368"); + list.add("002212024071416442310658482188440481792"); + list.add("002212024071417222310658491748499324928"); + list.add("002212024071417463110658497824297807872"); + list.add("002212024071418095210658503700136697856"); + list.add("002212024071418241910658507337462292480"); + list.add("002212024071418520910658514340199268352"); + list.add("002212024071419065410658518053344296960"); + list.add("002212024071419093610658518730817785856"); + list.add("002212024071420000910658531454371991552"); + list.add("002212024071420440110658542494894174208"); + list.add("002212024071421410710658556864312266752"); + list.add("002212024071421533610658560004148953088"); + list.add("002212024071421534710658560051303829504"); + list.add("002212024071422205310658566870639534080"); + list.add("002212024071422292510658569018839027712"); + list.add("002212024071422293510658569058408697856"); + list.add("002212024071422483210658573829309059072"); + list.add("002212024071423385310658586499360448512"); + list.add("002212024071500084010658593995683635200"); + list.add("002212024071501090910658609217545293824"); + list.add("002212024071511161410658761994496540672"); + list.add("002212024071513280410658795172632420352"); + list.add("002212024071513441810658799254744453120"); + list.add("002212024071514134010658806644448399360"); + list.add("002212024071514322410658811358983069696"); + list.add("002212024071516152310658837279305076736"); + list.add("002212024071516571010658847792281640960"); + list.add("002212024071517344110658857233118822400"); + list.add("002212024071518335110658872124857171968"); + list.add("002212024071519145310658882450216890368"); + list.add("002212024071519151110658882526294532096"); + list.add("002212024071519251010658885039130062848"); + list.add("002212024071519270910658885535523086336"); + list.add("002212024071519303010658886379672903680"); + list.add("002212024071520292110658901191358373888"); + list.add("002212024071521030510658909677543014400"); + list.add("002212024071522295810658931544999493632"); + list.add("002212024071522424710658934770277769216"); + list.add("002212024071523074010658941031189741568"); + list.add("002212024071600000410658954218836901888"); + list.add("002212024071603434610659010515370684416"); + list.add("002212024071606254010659051257723785216"); + list.add("002212024071606312010659052682687021056"); + list.add("002212024071611313710659128254829215744"); + list.add("002212024071611474810659132327465963520"); + list.add("002212024071613412510659160920036331520"); + list.add("002212024071614202210659170718330302464"); + list.add("002212024071614455310659177142450769920"); + list.add("002212024071616120110659198817581924352"); + list.add("002212024071617402210659221053621665792"); + list.add("002212024071618360110659235057642184704"); + list.add("002212024071618581310659240642243567616"); + list.add("002212024071620560710659270313064173568"); + list.add("002212024071621181610659275887985033216"); + list.add("002212024071621183310659275958260293632"); + list.add("002212024071621225310659277048132362240"); + list.add("002212024071622011010659286684718043136"); + list.add("002212024071622283510659293584995241984"); + list.add("002212024071623282610659308644488142848"); + list.add("002212024071623480510659313589164646400"); + list.add("002212024071700220910659322163814879232"); + list.add("002212024071700535410659330153477775360"); + list.add("002212024071707214210659427746084458496"); + list.add("002212024071708594610659452427842617344"); + list.add("002212024071711003510659482829413117952"); + list.add("002212024071712094910659500253107081216"); + list.add("002212024071712183410659502455532601344"); + list.add("002212024071713530510659526239962578944"); + list.add("002212024071714262810659534643640029184"); + list.add("002212024071716220510659563737027678208"); + list.add("002212024071717502710659585976355422208"); + list.add("002212024071717541810659586948200550400"); + list.add("002212024071718140210659591910154731520"); + list.add("002212024071718261510659594987159101440"); + list.add("002212024071718285910659595676147216384"); + list.add("002212024071718385110659598156935901184"); + list.add("002212024071718462610659600064509554688"); + list.add("002212024071718561810659602547476238336"); + list.add("002212024071719115810659606489581707265"); + list.add("002212024071719263910659610186310455296"); + list.add("002212024071719275610659610511448432640"); + list.add("002212024071719532810659616936728170496"); + list.add("002212024071719543310659617209810993152"); + list.add("002212024071720280610659625649236770816"); + list.add("002212024071720333810659627042321727488"); + list.add("002212024071720421310659629204341755904"); + list.add("002212024071721111310659636502437666816"); + list.add("002212024071721593710659648680759861248"); + list.add("002212024071722022710659649394210971648"); + list.add("002212024071722451410659660160519536640"); + list.add("002212024071723043810659665046152114176"); + list.add("002212024071723083410659666033322491904"); + list.add("002212024071800142710659682613491306496"); + list.add("002212024071800571210659693370750214144"); + list.add("002212024071802195510659714189578956800"); + list.add("002212024071812473910659872164945903616"); + list.add("002212024071813220610659880830803808256"); + list.add("002212024071814462810659902064822030336"); + list.add("002212024071816351710659929448841175040"); + list.add("002212024071817535710659949244943396864"); + list.add("002212024071817582210659950358319030272"); + list.add("002212024071818334610659959267898687489"); + list.add("002212024071818483310659962988370812928"); + list.add("002212024071819032810659966741164240896"); + list.add("002212024071819242610659972015167315968"); + list.add("002212024071819394310659975862358790144"); + list.add("002212024071820260210659987517399076864"); + list.add("002212024071820324410659989203875385344"); + list.add("002212024071821363610660005278326939648"); + list.add("002212024071821381710660005699964858368"); + list.add("002212024071821400910660006171053805568"); + list.add("002212024071821434910660007095399399424"); + list.add("002212024071822152910660015062249082880"); + list.add("002212024071823502310660038944565121024"); + list.add("002212024071823554310660040288344625152"); + list.add("002212024071901330110660064775793647616"); + list.add("002212024071908362310660171316458123264"); + list.add("002212024071910070310660194134058074112"); + list.add("002212024071912325810660230856912101376"); + list.add("002212024071912510610660235418379923456"); + list.add("002212024071912533010660236023805366272"); + list.add("002212024071914133210660256164214112256"); + list.add("002212024071915062610660269477543239680"); + list.add("002212024071915423610660278578141376512"); + list.add("002212024071916085410660285196926353408"); + list.add("002212024071917520310660311154555666432"); + list.add("002212024071918313710660321113217404928"); + list.add("002212024071918345710660321951587139584"); + list.add("002212024071919112210660331117254279168"); + list.add("002212024071919164110660332454306119680"); + list.add("002212024071919283610660335453217918976"); + list.add("002212024071919334110660336731753504768"); + list.add("002212024071919431410660339134941831168"); + list.add("002212024071919432810660339194256531456"); + list.add("002212024071920091210660345672701313024"); + list.add("002212024071920154110660347300766244864"); + list.add("002212024071920223610660349042645901312"); + list.add("002212024071921470610660370309860970496"); + list.add("002212024071922233010660379466675695616"); + list.add("002212024071922301010660381147116228608"); + list.add("002212024071922560310660387658671693825"); + list.add("002212024071923210310660393951240331264"); + list.add("002212024072001563710660433101498777600"); + list.add("002212024072008340510660533125984202752"); + list.add("002212024072010335110660563267700805632"); + list.add("002212024072010385610660564544769073152"); + list.add("002212024072010411310660565122622529536"); + list.add("002212024072011052010660571188585873408"); + list.add("002212024072011552210660583781464236032"); + list.add("002212024072011555710660583928339677184"); + list.add("002212024072013572910660614512231366656"); + list.add("002212024072014424810660625916837466112"); + list.add("002212024072015510710660643111617110016"); + list.add("002212024072016435810660656410357051392"); + list.add("002212024072017321210660668547296620544"); + list.add("002212024072017511710660673352314359808"); + list.add("002212024072018195710660680562863726592"); + list.add("002212024072019311810660698519623143424"); + list.add("002212024072021184910660725578040832000"); + list.add("002212024072022060610660737478827663360"); + list.add("002212024072022095110660738422694383616"); + list.add("002212024072022285410660743215805366272"); + list.add("002212024072022434410660746945973559296"); + list.add("002212024072101061510660782811850182656"); + list.add("002212024072101415610660791794814595072"); + list.add("002212024072108352310660895839786311680"); + list.add("002212024072109241810660908150468497408"); + list.add("002212024072111115210660935222133784576"); + list.add("002212024072111190310660937031436382208"); + list.add("002212024072112101910660949930262884352"); + list.add("002212024072112103410660949993850638336"); + list.add("002212024072112172110660951702897594368"); + list.add("002212024072114130110660980811018010624"); + list.add("002212024072114411210660987900811956224"); + list.add("002212024072114580110660992134161047552"); + list.add("002212024072116463310661019446894366720"); + list.add("002212024072117135610661026337405698048"); + list.add("002212024072117203210661028001354309632"); + list.add("002212024072117523610661036069702033408"); + list.add("002212024072117534110661036340577800192"); + list.add("002212024072118293110661045361061969920"); + list.add("002212024072119335810661061580418076672"); + list.add("002212024072119364710661062289260331008"); + list.add("002212024072119370910661062379868172288"); + list.add("002212024072121453010661094681760387072"); + list.add("002212024072122025410661099061711646720"); + list.add("002212024072122475510661110387772448768"); + list.add("002212024072123500110661126014958792704"); + list.add("002212024072200060910661130077043736576"); + list.add("002212024072200405110661138810633162752"); + list.add("002212024072200455010661140061427240960"); + list.add("002212024072211055510661296112135413760"); + list.add("002212024072211192110661299494831640576"); + list.add("002212024072212401410661319848941703168"); + list.add("002212024072213072510661326687296077824"); + list.add("002212024072213424910661335598480433152"); + list.add("002212024072214205510661345186060656640"); + list.add("002212024072214360110661348986164310016"); + list.add("002212024072217462910661396919777718272"); + list.add("002212024072218295610661407851657142272"); + list.add("002212024072219034810661416374111789056"); + list.add("002212024072219253410661421855267524608"); + list.add("002212024072220000510661430540861878272"); + list.add("002212024072220244310661436740307431424"); + list.add("002212024072220341810661439151171031040"); + list.add("002212024072220444710661441787717443584"); + list.add("002212024072220504010661443267925426176"); + list.add("002212024072220570110661444866881839104"); + list.add("002212024072222121310661463790457397248"); + list.add("002212024072222204810661465951628427264"); + list.add("002212024072222343410661469418185719808"); + list.add("002212024072223223110661481482059689984"); + list.add("002212024072300460410661502509520146432"); + list.add("002212024072308211510661617060238065664"); + list.add("002212024072308461010661623330723762176"); + list.add("002212024072310130110661645187749687296"); + list.add("002212024072312422810661682799113842688"); + list.add("002212024072313162610661691345359196160"); + list.add("002212024072314285910661709602762747904"); + list.add("002212024072315342310661726063310610432"); + list.add("002212024072316012910661732883531419648"); + list.add("002212024072317565210661761918588276736"); + list.add("002212024072318030410661763480097177601"); + list.add("002212024072319094010661780240724353024"); + list.add("002212024072319154510661781770336673792"); + list.add("002212024072319231910661783676281327616"); + list.add("002212024072320284910661800160531013632"); + list.add("002212024072320433610661803880117866496"); + list.add("002212024072322300310661830669448163328"); + list.add("002212024072322363110661832295173169152"); + list.add("002212024072322373210661832551203020800"); + list.add("002212024072322393310661833057128648704"); + list.add("002212024072322594010661838121214935040"); + list.add("002212024072323114710661841170223771648"); + list.add("002212024072323140110661841734526455808"); + list.add("002212024072323263010661844874588282880"); + list.add("002212024072401121010661871466556805120"); + list.add("002212024072402380710661893096266473472"); + list.add("002212024072411213010662024810671636480"); + list.add("002212024072411314310662027382244204544"); + list.add("002212024072411444410662030657385623552"); + list.add("002212024072412421310662045123676442624"); + list.add("002212024072414252810662071106696224768"); + list.add("002212024072414353810662073663728492544"); + list.add("002212024072415114710662082764211982336"); + list.add("002212024072416360110662103959310434304"); + list.add("002212024072417243810662116195447447552"); + list.add("002212024072418244010662131301192192000"); + list.add("002212024072418323010662133275245838336"); + list.add("002212024072419412310662150609387126784"); + list.add("002212024072420191210662160126138560512"); + list.add("002212024072420331810662163674097827840"); + list.add("002212024072421150610662174195163295744"); + list.add("002212024072421191410662175234400411648"); + list.add("002212024072421524910662183685548322816"); + list.add("002212024072422054210662186928072663040"); + list.add("002212024072422391410662195366426624000"); + list.add("002212024072422451410662196875497746432"); + list.add("002212024072423544610662214375649517568"); + list.add("002212024072500013910662216107302846464"); + list.add("002212024072500141410662219275458801664"); + list.add("002212024072501203410662235969809752064"); + list.add("002212024072501391810662240683988004864"); + list.add("002212024072512201010662401963658539008"); + list.add("002212024072513434710662423002989350912"); + list.add("002212024072514312210662434978347003904"); + list.add("002212024072515273610662449131530653696"); + list.add("002212024072517585610662487213909737472"); + list.add("002212024072518514010662500486880911360"); + list.add("002212024072519022610662503194177249280"); + list.add("002212024072519120310662505614073618432"); + list.add("002212024072519345310662511363568340992"); + list.add("002212024072519364510662511829930708992"); + list.add("002212024072519374810662512095916691456"); + list.add("002212024072520511310662530572639584256"); + list.add("002212024072521275310662539798382342144"); + list.add("002212024072522122810662551018453831680"); + list.add("002212024072522521310662561022518697984"); + list.add("002212024072523001210662563030722383872"); + list.add("002212024072523122110662566090312040448"); + list.add("002212024072600172610662582468216201216"); + list.add("002212024072600190210662582869410873344"); + list.add("002212024072601344110662601908745101312"); + list.add("002212024072611422710662754857725452288"); + list.add("002212024072612290910662766611114344448"); + list.add("002212024072612430110662770098166218752"); + list.add("002212024072613315610662782411633713152"); + list.add("002212024072614282610662796629251555328"); + list.add("002212024072614484010662801720243642368"); + list.add("002212024072614500510662802075453935616"); + list.add("002212024072614543010662803188519251968"); + list.add("002212024072616072910662821554372837376"); + list.add("002212024072617284110662841989332434944"); + list.add("002212024072617422910662845463691198464"); + list.add("002212024072618024710662850573449814016"); + list.add("002212024072618104110662852560895598592"); + list.add("002212024072618423610662860591497150464"); + list.add("002212024072618481810662862027435245568"); + list.add("002212024072618532410662863311535456256"); + list.add("002212024072618591110662864765108101120"); + list.add("002212024072619062710662866595653345280"); + list.add("002212024072619151210662868796523266048"); + list.add("002212024072619170310662869261451186176"); + list.add("002212024072620120410662883108109074432"); + list.add("002212024072620344910662888833099153408"); + list.add("002212024072620505310662892876711788544"); + list.add("002212024072621520010662908255929827328"); + list.add("002212024072622263010662916936528527360"); + list.add("002212024072622313610662918219964448768"); + list.add("002212024072622424510662921027761700864"); + list.add("002212024072623204610662930595696197632"); + list.add("002212024072623451910662936771811540992"); + list.add("002212024072700460010662952045679136768"); + list.add("002212024072702111310662973492050010112"); + list.add("002212024072708482010663073426228838400"); + list.add("002212024072712573010663136130998476800"); + list.add("002212024072713305910663144558488829952"); + list.add("002212024072713595810663151851537817600"); + list.add("002212024072714024110663152536007311360"); + list.add("002212024072714152110663155725185499136"); + list.add("002212024072714423710663162586565128192"); + list.add("002212024072715003810663167120806084608"); + list.add("002212024072715380510663176546879504384"); + list.add("002212024072717262810663203821630177280"); + list.add("002212024072717435810663208223953920000"); + list.add("002212024072717481710663209312427098112"); + list.add("002212024072719025210663228078236827648"); + list.add("002212024072719301310663234962318942208"); + list.add("002212024072719452610663238790849855488"); + list.add("002212024072721175310663262059237933056"); + list.add("002212024072721253310663263985865187328"); + list.add("002212024072721451410663268939213504512"); + list.add("002212024072722162810663276800488759296"); + list.add("002212024072722190310663277453268942848"); + list.add("002212024072722220010663278195291152384"); + list.add("002212024072722335310663281184663265280"); + list.add("002212024072722422810663283344554786816"); + list.add("002212024072723245310663294019568873472"); + list.add("002212024072800131410663306185077653504"); + list.add("002212024072801535110663331505630588928"); + list.add("002212024072808394210663433641836130304"); + list.add("002212024072811283610663476148493361152"); + list.add("002212024072812204410663489267949875200"); + list.add("002212024072813420310663509730340089856"); + list.add("002212024072814010210663514507537506304"); + list.add("002212024072814163510663518422364438528"); + list.add("002212024072814290610663521570372648960"); + list.add("002212024072814402810663524432623919104"); + list.add("002212024072815402010663539499842850816"); + list.add("002212024072816491910663556859089321984"); + list.add("002212024072817525310663572858029850625"); + list.add("002212024072818080910663576697455693824"); + list.add("002212024072818272410663581540980031488"); + list.add("002212024072818591510663589559566532608"); + list.add("002212024072819080610663591783213424640"); + list.add("002212024072819372810663599174219825152"); + list.add("002212024072820054710663606301289021440"); + list.add("002212024072820213110663610259744423936"); + list.add("002212024072820295010663612354917048320"); + list.add("002212024072820433810663615825347850240"); + list.add("002212024072820470510663616696720678912"); + list.add("002212024072821035310663620921002491904"); + list.add("002212024072821331210663628300301565952"); + list.add("002212024072821533310663633422290235392"); + list.add("002212024072822243510663641233208557568"); + list.add("002212024072822285610663642328485539840"); + list.add("002212024072823294010663657612256862208"); + list.add("002212024072900034510663666188039872512"); + list.add("002212024072900274510663672229277433856"); + list.add("002212024072906485210663768138442264576"); + list.add("002212024072910472010663828148988510208"); + list.add("002212024072914102010663879235867500544"); + list.add("002212024072916031510663907653475053568"); + list.add("002212024072918070710663938826113306624"); + list.add("002212024072918422210663947697234038784"); + list.add("002212024072919074210663954070626598912"); + list.add("002212024072919075610663954132222816256"); + list.add("002212024072919084210663954323615494144"); + list.add("002212024072919282910663959304597364736"); + list.add("002212024072919295410663959659570536448"); + list.add("002212024072919425410663962931520274432"); + list.add("002212024072920210410663972535940374528"); + list.add("002212024072920285110663974493530304512"); + list.add("002212024072921244610663988564858187776"); + list.add("002212024072921312210663990228635344896"); + list.add("002212024072922343810664006147944210432"); + list.add("002212024072922531010664010811004796928"); + list.add("002212024072922540410664011039579168768"); + list.add("002212024072923175610664017047036866560"); + list.add("002212024072923382310664022193383067648"); + list.add("002212024073001412910664053170718384128"); + list.add("002212024073012140510664212369414488064"); + list.add("002212024073015423010664264820845654016"); + list.add("002212024073017263310664291004912435200"); + list.add("002212024073018174110664303873070673920"); + list.add("002212024073018255210664305933879529472"); + list.add("002212024073018473110664311380141629440"); + list.add("002212024073018542910664313133895368704"); + list.add("002212024073019391410664324395507843072"); + list.add("002212024073019510510664327376421003264"); + list.add("002212024073022340310664368388547796992"); + list.add("002212024073023121110664377984430047232"); + list.add("002212024073100175010664394509192200192"); + list.add("002212024073100222210664395650593636352"); + list.add("002212024073100413910664400499374227456"); + list.add("002212024073102491810664432626716073984"); + list.add("002212024073104022910664451042307407872"); + list.add("002212024073111253410664562548772954112"); + list.add("002212024073111452110664567525092032512"); + list.add("002212024073118043010664662942944002048"); + list.add("002212024073118140810664665367261749248"); + list.add("002212024073118214610664667288861138944"); + list.add("002212024073118381910664671452108894208"); + list.add("002212024073118390910664671663595708416"); + list.add("002212024073119371110664686269646602240"); + list.add("002212024073119475410664688964712390656"); + list.add("002212024073120524910664705300197199872"); + list.add("002212024073121223810664712805447860224"); + list.add("002212024073123052910664738687723356160"); + list.add("002212024073123090910664739609386516480"); - list.add("002212024020209484310599308359376400384"); - list.add("002212024020210271910599318075130855424"); - list.add("002212024020212541710599355059612233728"); - list.add("002212024020213102110599359102390714368"); - list.add("002212024020216131410599405125300551680"); - list.add("002212024020217093710599419315385958400"); - list.add("002212024020217473410599428865474797568"); - list.add("002212024020310524610599686864093933568"); - list.add("002212024020311461610599700328538521600"); - list.add("002212024020312191210599708616768860160"); - list.add("002212024020316231310599770024630005760"); - list.add("002212024020317284610599786522318110720"); - list.add("002212024020320430710599835430821130240"); - list.add("002212024020407435510600001726333087744"); - list.add("002212024020410182010600040588758065152"); - list.add("002212024020411534710600064609071640576"); - list.add("002212024020417400510600151759191855104"); - list.add("002212024020507172410600357444209025024"); - list.add("002212024020508232410600374051907993600"); - list.add("002212024020518441410600530289171918848"); - list.add("002212024020519172410600538637863464960"); - list.add("002212024020609570510600760018361991168"); - list.add("002212024020615260710600842821125234688"); - list.add("002212024020616351310600860210705182720"); - list.add("002212024020708224510601098662578515968"); - list.add("002212024020717081110601230892282519552"); - list.add("002212024020717535710601242409709817856"); - list.add("002212024020720104910601276856179843072"); - list.add("002212024020811091710601502961240539136"); - list.add("002212024020812204910601520965132042240"); - list.add("002212024020812433910601526711751221248"); - list.add("002212024020813215410601536336834174976"); - list.add("002212024020813363810601540042416410624"); - list.add("002212024020816530510601589483749486592"); - list.add("002212024020911345910601871817422499840"); - list.add("002212024020911450510601874358973591552"); - list.add("002212024020913082310601895323803398144"); - list.add("002212024020917285510601960885797601280"); - list.add("002212024020923321510602052324288184320"); - list.add("002212024021015493410602298273655889920"); - list.add("002212024021018355210602340125127766016"); - list.add("002212024021112433910602613873231818752"); - list.add("002212024021114122910602636230311387136"); - list.add("002212024021119502010602721250099175424"); - list.add("002212024021208045810602906128065474560"); - list.add("002212024021212582910602979995000197120"); - list.add("002212024021311431310603323439251013632"); - list.add("002212024021414124810603723473701003264"); - list.add("002212024021416374510603759951855538176"); - list.add("002212024021512373810604061909971976192"); - list.add("002212024021513502010604080206798815232"); - list.add("002212024021612390610604424667854565376"); - list.add("002212024021614382210604454682567995392"); - list.add("002212024021618161210604509502316036096"); - list.add("002212024021619055910604522029036945408"); - list.add("002212024021714081110604809473864318976"); - list.add("002212024021717341410604861328137609216"); - list.add("002212024021719245910604889199513939968"); - list.add("002212024021722055310604929693275873280"); - list.add("002212024021803175510605008216941998080"); - list.add("002212024021820155710605264413833666560"); - list.add("002212024021820565210605274710090215424"); - list.add("002212024022013144410605883186159243264"); - list.add("002212024022015500710605922290279325696"); - list.add("002212024022016461910605936431721140224"); - list.add("002212024022016543010605938491023716352"); - list.add("002212024022108493010606178825546194944"); - list.add("002212024022109065810606183221123031040"); - list.add("002212024022113324010606250086104989696"); - list.add("002212024022210211210606564292809359361"); - list.add("002212024022213031810606605083995381760"); - list.add("002212024022214024510606620047016292352"); - list.add("002212024022308440810606902252803698688"); - list.add("002212024022312132810606954931922223104"); - list.add("002212024022312402710606961722464624640"); - list.add("002212024022411491510607311227746832384"); - list.add("002212024022413485910607341357879222272"); - list.add("002212024022415144310607362932927844352"); - list.add("002212024022514535410607720081572339712"); - list.add("002212024022516074310607738658967334912"); - list.add("002212024022518273010607773838208716800"); - list.add("002212024022521492210607824639666380800"); - list.add("002212024022608485210607990606768402432"); - list.add("002212024022612165010608042943269646336"); - list.add("002212024022613560810608067933733871616"); - list.add("002212024022614550810608082781125435392"); - list.add("002212024022619595410608159475797643264"); - list.add("002212024022707371010608334950978772992"); - list.add("002212024022709081310608357864529403904"); - list.add("002212024022712154510608405058006364160"); - list.add("002212024022712392810608411027829477376"); - list.add("002212024022806403310608683092124008448"); - list.add("002212024022808034910608704044328509440"); - list.add("002212024022809225610608723956677173248"); - list.add("002212024022811132410608751753355546624"); - list.add("002212024022814331510608802048514699264"); - list.add("002212024022909583510609095314062401536"); - list.add("002212024022909590510609095441475489792"); - list.add("002212024022910250510609101983075561472"); - list.add("002212024022912330510609134197927157760"); - list.add("002212024022917224110609207074815569920"); - list.add("002212024030108482510609440044237148160"); - list.add("002212024030109285810609450248058269696"); - list.add("002212024030111440410609484246637305856"); - list.add("002212024030116454210609560155036897280"); - list.add("002212024030118321310609586961187037184"); - list.add("002212024030207504610609787924464230400"); - list.add("002212024030213181410609870333334548480"); - list.add("002212024030213314010609873716453998592"); - list.add("002212024030216253510609917482750660608"); - list.add("002212024030218075010609943216166612992"); - list.add("002212024030218462710609952931726209024"); - list.add("002212024030219175910609960867252908032"); - list.add("002212024030219320010609964395170324480"); - list.add("002212024030220365110609980716001165312"); return list; } diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java index b9e2e1920..bf93ce529 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java @@ -4,6 +4,7 @@ import com.google.common.collect.Lists; import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.YKCUtils; +import lombok.extern.slf4j.Slf4j; import java.util.List; @@ -13,6 +14,7 @@ import java.util.List; * 单数为 桩 -> 平台 * 双数为 平台 -> 桩 */ +@Slf4j public enum YKCFrameTypeCode { LOGIN_CODE(0x01, "充电桩登录认证"), @@ -114,8 +116,8 @@ public enum YKCFrameTypeCode { this.value = value; } - private int code; - private String value; + private int code; // 帧类型code + private String value; // 帧类型名称 public int getCode() { return code; @@ -129,15 +131,6 @@ public enum YKCFrameTypeCode { return BytesUtil.intToBytesLittle(code, 1); } - public static YKCFrameTypeCode fromCode(byte code) { - for (YKCFrameTypeCode item : YKCFrameTypeCode.values()) { - if (item.getCode() == code) { - return item; - } - } - return null; - } - public static String getFrameTypeStr(String frameType) { for (YKCFrameTypeCode item : YKCFrameTypeCode.values()) { String str = YKCUtils.frameType2Str(item.getBytes()); @@ -281,6 +274,7 @@ public enum YKCFrameTypeCode { REMOTE_ACCOUNT_BALANCE_UPDATE(REMOTE_ACCOUNT_BALANCE_UPDATE_CODE.getCode(), REMOTE_ACCOUNT_BALANCE_UPDATE_ANSWER_CODE.getCode()), ; + // 请求帧类型 private int requestFrameType; @@ -307,34 +301,25 @@ public enum YKCFrameTypeCode { return BytesUtil.intToBytesLittle(requestFrameType, 1); } + public byte[] getResponseFrameBytes() { + return BytesUtil.intToBytesLittle(responseFrameType, 1); + } + PileAnswersRelation(int requestFrameType, int responseFrameType) { this.requestFrameType = requestFrameType; this.responseFrameType = responseFrameType; } - // 根据请求帧类型 获取应答帧类型 int类型 - public static int getResponseFrameTypeByRequestFrameType(int requestFrameType) { + /** + * 根据响应帧类型 查找对应的 请求帧类型 + */ + public static String getRequestFrameType(String responseFrameType) { for (PileAnswersRelation relation : PileAnswersRelation.values()) { - if (relation.getRequestFrameType() == requestFrameType) { - return relation.getResponseFrameType(); + if (StringUtils.equals(responseFrameType, YKCUtils.frameType2Str(relation.getResponseFrameBytes()))) { + return YKCUtils.frameType2Str(relation.getRequestFrameBytes()); } } - return 0; - } - - // 根据请求帧类型 获取应答帧类型 byte[]类型 - public static byte[] getResponseFrameTypeBytes(byte[] requestFrameType) { - int frameType = BytesUtil.bytesToInt(requestFrameType); - return BytesUtil.intToBytes(getResponseFrameTypeByRequestFrameType(frameType), 1); - } - - // 需要获取应答的帧类型 - public static List getRequestFrameTypeList() { - List resultList = Lists.newArrayList(); - for (PileAnswersRelation relation : PileAnswersRelation.values()) { - resultList.add(YKCUtils.frameType2Str(relation.getRequestFrameBytes())); - } - return resultList; + return null; } } diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java index f877b4d3a..18b7650e6 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java @@ -171,7 +171,7 @@ public enum ReturnCodeEnum { CODE_CREATE_RESERVED_ERROR("00400013", "创建预约失败"), - CODE_UPDATE_RESERVED_STATUS_ERROR("00400014", "修改预约充电状态失败"), + CODE_UPDATE_RESERVED_STATUS_ERROR("00400014", "修改预约充电信息失败"), CODE_QUERY_RESERVED_LIST_ERROR("00400015", "查询预约充电列表失败"), diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/Message.java b/jsowell-common/src/main/java/com/jsowell/common/protocol/Message.java similarity index 72% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/Message.java rename to jsowell-common/src/main/java/com/jsowell/common/protocol/Message.java index 0b733044e..bb6f22ac2 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/Message.java +++ b/jsowell-common/src/main/java/com/jsowell/common/protocol/Message.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.common.protocol; import lombok.Data; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageConstant.java b/jsowell-common/src/main/java/com/jsowell/common/protocol/MessageConstant.java similarity index 76% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageConstant.java rename to jsowell-common/src/main/java/com/jsowell/common/protocol/MessageConstant.java index 930cab4b8..ae137685b 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageConstant.java +++ b/jsowell-common/src/main/java/com/jsowell/common/protocol/MessageConstant.java @@ -1,4 +1,8 @@ -package com.jsowell.netty.rpc; +package com.jsowell.common.protocol; + +import com.jsowell.common.protocol.Message; +import com.jsowell.common.protocol.RpcRequest; +import com.jsowell.common.protocol.RpcResponse; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequest.java b/jsowell-common/src/main/java/com/jsowell/common/protocol/RpcRequest.java similarity index 69% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequest.java rename to jsowell-common/src/main/java/com/jsowell/common/protocol/RpcRequest.java index 8ffc0fcfb..888e85d5e 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequest.java +++ b/jsowell-common/src/main/java/com/jsowell/common/protocol/RpcRequest.java @@ -1,5 +1,6 @@ -package com.jsowell.netty.rpc; +package com.jsowell.common.protocol; +import com.jsowell.common.protocol.Message; import lombok.Data; import lombok.ToString; @@ -7,7 +8,7 @@ import java.util.UUID; @Data @ToString -public class RpcRequest extends Message{ +public class RpcRequest extends Message { private String id; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponse.java b/jsowell-common/src/main/java/com/jsowell/common/protocol/RpcResponse.java similarity index 62% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponse.java rename to jsowell-common/src/main/java/com/jsowell/common/protocol/RpcResponse.java index 075ae9186..e8d43d434 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponse.java +++ b/jsowell-common/src/main/java/com/jsowell/common/protocol/RpcResponse.java @@ -1,11 +1,12 @@ -package com.jsowell.netty.rpc; +package com.jsowell.common.protocol; +import com.jsowell.common.protocol.Message; import lombok.Data; import lombok.ToString; @Data @ToString -public class RpcResponse extends Message{ +public class RpcResponse extends Message { private String id; diff --git a/jsowell-common/src/main/java/com/jsowell/common/protocol/SyncPromise.java b/jsowell-common/src/main/java/com/jsowell/common/protocol/SyncPromise.java new file mode 100644 index 000000000..7ce5e820a --- /dev/null +++ b/jsowell-common/src/main/java/com/jsowell/common/protocol/SyncPromise.java @@ -0,0 +1,72 @@ +package com.jsowell.common.protocol; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +public class SyncPromise { + + // 用于接收结果 + // private RpcResponse rpcResponse; + + private byte[] rpcResult; + + private final CountDownLatch countDownLatch = new CountDownLatch(1); + + // 用于判断是否超时 + private boolean isTimeout = false; + + public boolean isTimeout() { + return isTimeout; + } + + public byte[] getRpcResult() { + return rpcResult; + } + + public void setRpcResult(byte[] rpcResult) { + this.rpcResult = rpcResult; + } + + /** + * 同步等待返回结果 + */ + // public RpcResponse get(long timeout, TimeUnit unit) throws InterruptedException { + // // 等待阻塞,超时时间内countDownLatch减到0,将提前唤醒,以此作为是否超时判断 + // boolean earlyWakeUp = countDownLatch.await(timeout, unit); + // + // if(earlyWakeUp) { + // // 超时时间内countDownLatch减到0,提前唤醒,说明已有结果 + // return rpcResponse; + // } else { + // // 超时时间内countDownLatch没有减到0,自动唤醒,说明超时时间内没有等到结果 + // isTimeout = true; + // return null; + // } + // } + + public byte[] get2(long timeout, TimeUnit unit) throws InterruptedException { + // 等待阻塞,超时时间内countDownLatch减到0,将提前唤醒,以此作为是否超时判断 + boolean earlyWakeUp = countDownLatch.await(timeout, unit); + + if(earlyWakeUp) { + // 超时时间内countDownLatch减到0,提前唤醒,说明已有结果 + return rpcResult; + } else { + // 超时时间内countDownLatch没有减到0,自动唤醒,说明超时时间内没有等到结果 + isTimeout = true; + return null; + } + } + + public void wake() { + countDownLatch.countDown(); + } + + // public RpcResponse getRpcResponse() { + // return rpcResponse; + // } + // public void setRpcResponse(RpcResponse rpcResponse) { + // this.rpcResponse = rpcResponse; + // } + +} \ No newline at end of file diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/RpcUtil.java b/jsowell-common/src/main/java/com/jsowell/common/util/RpcUtil.java new file mode 100644 index 000000000..81cfd89a2 --- /dev/null +++ b/jsowell-common/src/main/java/com/jsowell/common/util/RpcUtil.java @@ -0,0 +1,17 @@ +package com.jsowell.common.util; + +import com.jsowell.common.protocol.SyncPromise; +import lombok.extern.slf4j.Slf4j; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Slf4j +public class RpcUtil { + + private final static Map syncPromiseMap = new ConcurrentHashMap<>(); + + public static Map getSyncPromiseMap() { + return syncPromiseMap; + } + +} \ No newline at end of file diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractHandler.java index f0ff96e2c..eebbb42d1 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractHandler.java @@ -9,7 +9,6 @@ import com.jsowell.common.enums.ykc.PileChannelEntity; import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.CRC16Util; import com.jsowell.common.util.DateUtils; -import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; @@ -26,9 +25,9 @@ public abstract class AbstractHandler implements InitializingBean { * 执行逻辑 * 有应答 */ - public byte[] supplyProcess(YKCDataProtocol ykcDataProtocol, Channel channel) { - throw new UnsupportedOperationException(); - } + // public byte[] supplyProcess(YKCDataProtocol ykcDataProtocol, Channel channel) { + // throw new UnsupportedOperationException(); + // } public byte[] supplyProcess(YKCDataProtocol ykcDataProtocol, ChannelHandlerContext channel) { throw new UnsupportedOperationException(); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/RemoteIssuedQrCodeHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/RemoteIssuedQrCodeHandler.java index bb347dfa6..7fca358a1 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/RemoteIssuedQrCodeHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/RemoteIssuedQrCodeHandler.java @@ -7,7 +7,6 @@ import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.YKCUtils; import com.jsowell.netty.factory.YKCOperateFactory; -import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java index c70763e74..60c5eb404 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java @@ -64,8 +64,8 @@ public class ReservationChargingResponseHandler extends AbstractHandler{ byte[] failedReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String failedReason = BytesUtil.bcd2Str(failedReasonByteArr); - log.info("0x59预约充电响应, 交易流水号:{}, 桩SN:{}, 枪口号:{}, 结果:{}, 失败原因:{}", - transactionCode, pileSn, connectorCode, resultCode, failedReason); + // log.info("0x59预约充电响应, 交易流水号:{}, 桩SN:{}, 枪口号:{}, 结果:{}, 失败原因:{}", + // transactionCode, pileSn, connectorCode, resultCode, failedReason); return null; } } diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java index 3cf942803..612616965 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java @@ -252,14 +252,14 @@ public class UploadRealTimeMonitorHandler extends AbstractHandler { if (StringUtils.equals("01", isChargerPluggedIn)) { // 插枪状态 if (redisCache.setnx(plugRedisKey, pileConnectorCode, CacheConstants.cache_expire_time_30d)) { - log.info("时间:{}, 枪口号:{}, 首次插入充电枪", DateUtils.getDateTime(), pileConnectorCode); + // log.info("时间:{}, 枪口号:{}, 首次插入充电枪", DateUtils.getDateTime(), pileConnectorCode); // 设置成功说明 第一次插枪 // pileBasicInfoService.firstPlugInCharger(pileConnectorCode); } } else { // 未插枪状态 if (redisCache.hasKey(plugRedisKey) && redisCache.deleteObject(plugRedisKey)) { - log.info("时间:{}, 枪口号:{}, 首次拔出充电枪", DateUtils.getDateTime(), pileConnectorCode); + // log.info("时间:{}, 枪口号:{}, 首次拔出充电枪", DateUtils.getDateTime(), pileConnectorCode); // redis有值,并且删除成功,说明首次拔枪 // pileBasicInfoService.firstUnplugCharger(pileConnectorCode); } diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcUtil.java b/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcUtil.java deleted file mode 100644 index cc85f8581..000000000 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcUtil.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.jsowell.netty.rpc; - -import io.netty.channel.Channel; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class RpcUtil { - - private final static Map syncPromiseMap = new ConcurrentHashMap<>(); - - private final static Channel channel; - - static{ - channel = new RpcClient().connect("127.0.0.1", 8888); - } - - public static RpcResponse send(RpcRequest rpcRequest, long timeout, TimeUnit unit) throws Exception{ - - if(channel == null) { - throw new NullPointerException("channel"); - } - - if(rpcRequest == null) { - throw new NullPointerException("rpcRequest"); - } - - if(timeout <= 0) { - throw new IllegalArgumentException("timeout must greater than 0"); - } - - // 创造一个容器,用于存放当前线程与rpcClient中的线程交互 - SyncPromise syncPromise = new SyncPromise(); - syncPromiseMap.put(rpcRequest.getId(), syncPromise); - - // 发送消息,此处如果发送玩消息并且在get之前返回了结果,下一行的get将不会进入阻塞,也可以顺利拿到结果 - channel.writeAndFlush(rpcRequest); - - // 等待获取结果 - RpcResponse rpcResponse = syncPromise.get(timeout, unit); - - if(rpcResponse == null) { - if(syncPromise.isTimeout()) { - throw new TimeoutException("等待响应结果超时"); - } else{ - throw new Exception("其他异常"); - } - } - - // 移除容器 - syncPromiseMap.remove(rpcRequest.getId()); - - return rpcResponse; - } - - public static Map getSyncPromiseMap(){ - return syncPromiseMap; - } - - -} \ No newline at end of file diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/SyncPromise.java b/jsowell-netty/src/main/java/com/jsowell/netty/rpc/SyncPromise.java deleted file mode 100644 index 41ef7b322..000000000 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/SyncPromise.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.jsowell.netty.rpc; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -public class SyncPromise { - - // 用于接收结果 - private RpcResponse rpcResponse; - - private final CountDownLatch countDownLatch = new CountDownLatch(1); - - // 用于判断是否超时 - private boolean isTimeout = false; - - /** - * 同步等待返回结果 - */ - public RpcResponse get(long timeout, TimeUnit unit) throws InterruptedException { - // 等待阻塞,超时时间内countDownLatch减到0,将提前唤醒,以此作为是否超时判断 - boolean earlyWakeUp = countDownLatch.await(timeout, unit); - - if(earlyWakeUp) { - // 超时时间内countDownLatch减到0,提前唤醒,说明已有结果 - return rpcResponse; - } else { - // 超时时间内countDownLatch没有减到0,自动唤醒,说明超时时间内没有等到结果 - isTimeout = true; - return null; - } - } - - public void wake() { - countDownLatch.countDown(); - } - - public RpcResponse getRpcResponse() { - return rpcResponse; - } - - public void setRpcResponse(RpcResponse rpcResponse) { - this.rpcResponse = rpcResponse; - } - - public boolean isTimeout() { - return isTimeout; - } - -} \ No newline at end of file diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java index 1b2d4d378..12bcae3ac 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java @@ -6,6 +6,8 @@ import com.jsowell.common.enums.ykc.PileChannelEntity; import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.YKCUtils; +import com.jsowell.common.util.RpcUtil; +import com.jsowell.common.protocol.SyncPromise; import com.jsowell.netty.service.yunkuaichong.YKCBusinessService; import io.netty.buffer.ByteBuf; import io.netty.channel.*; @@ -28,7 +30,7 @@ import java.util.concurrent.ConcurrentHashMap; @ChannelHandler.Sharable @Slf4j @Component -public class NettyServerHandler extends SimpleChannelInboundHandler { +public class NettyServerHandler extends ChannelInboundHandlerAdapter { @Autowired private YKCBusinessService ykcService; @@ -73,19 +75,32 @@ public class NettyServerHandler extends SimpleChannelInboundHandler { // 获取帧类型 byte[] frameTypeBytes = BytesUtil.copyBytes(msg, 5, 1); String frameType = YKCUtils.frameType2Str(frameTypeBytes); + + // 判断该帧类型是否为某请求帧的应答帧 + String requestFrameType = YKCFrameTypeCode.PileAnswersRelation.getRequestFrameType(frameType); + // log.info("同步获取响应数据-判断该帧类型是否为某请求帧的应答帧, frameType:{}, requestFrameType:{}", frameType, requestFrameType); + if (StringUtils.isNotBlank(requestFrameType)) { + // 根据请求id,在集合中找到与外部线程通信的SyncPromise对象 + String msgId = ctx.channel().id().toString() + "_" + requestFrameType; + // log.info("同步获取响应数据-收到消息, msgId:{}", msgId); + SyncPromise syncPromise = RpcUtil.getSyncPromiseMap().get(msgId); + if(syncPromise != null) { + // 设置响应结果 + syncPromise.setRpcResult(msg); + // 唤醒外部线程 + // log.info("同步获取响应数据-唤醒外部线程, SyncPromise:{}", JSON.toJSONString(syncPromise)); + syncPromise.wake(); + } + } + // 获取序列号域 int serialNumber = BytesUtil.bytesToIntLittle(BytesUtil.copyBytes(msg, 2, 2)); + // 获取channel Channel channel = ctx.channel(); - // new - // String hexString = DatatypeConverter.printHexBinary(msg); - // 心跳包0x03日志太多,造成日志文件过大,改为不打印 if (!CollectionUtils.containsAny(notPrintFrameTypeList, frameType)) { - // log.info("【<<<<<平台收到消息<<<<<】channel:{}, 帧类型:{}, 帧名称:{}, 序列号域:{}, 报文:{}, new报文:{}", - // channel.id(), frameType, YKCFrameTypeCode.getFrameTypeStr(frameType), serialNumber, - // BytesUtil.binary(msg, 16), hexString); log.info("【<<<<<平台收到消息<<<<<】channel:{}, 帧类型:{}, 帧名称:{}, 序列号域:{}, 报文:{}", channel.id(), frameType, YKCFrameTypeCode.getFrameTypeStr(frameType), serialNumber, BytesUtil.binary(msg, 16)); @@ -109,10 +124,10 @@ public class NettyServerHandler extends SimpleChannelInboundHandler { } } - @Override - protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { - log.info("channelRead0=== channelId:" + ctx.channel().id() + ", msg:" + msg); - } + // @Override + // protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception { + // log.info("channelRead0=== channelId:" + ctx.channel().id() + ", msg:" + msg); + // } /** * 有客户端终止连接服务器会触发此函数 diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/ClientChannelInitializer.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/ClientChannelInitializer.java similarity index 94% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/ClientChannelInitializer.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/ClientChannelInitializer.java index 4c1f813f3..b3e3c73e1 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/ClientChannelInitializer.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/ClientChannelInitializer.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageDecode.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageDecode.java similarity index 91% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageDecode.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageDecode.java index d391a2943..c88a68428 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageDecode.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageDecode.java @@ -1,5 +1,7 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; +import com.jsowell.common.protocol.Message; +import com.jsowell.common.protocol.MessageConstant; import com.jsowell.common.util.bean.SerializationUtil; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageEncode.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageEncode.java similarity index 91% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageEncode.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageEncode.java index b96edcb01..e3d0f236e 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/MessageEncode.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/MessageEncode.java @@ -1,5 +1,6 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; +import com.jsowell.common.protocol.Message; import com.jsowell.common.util.bean.SerializationUtil; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcClient.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcClient.java similarity index 97% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcClient.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcClient.java index 2caefc9ae..ec0b82a35 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcClient.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcClient.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequestHandler.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcRequestHandler.java similarity index 90% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequestHandler.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcRequestHandler.java index 59c034caf..164802056 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcRequestHandler.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcRequestHandler.java @@ -1,5 +1,7 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; +import com.jsowell.common.protocol.RpcRequest; +import com.jsowell.common.protocol.RpcResponse; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.DefaultEventLoopGroup; import io.netty.channel.EventLoopGroup; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponseHandler.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcResponseHandler.java similarity index 74% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponseHandler.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcResponseHandler.java index d98837b8a..b91c14927 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcResponseHandler.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcResponseHandler.java @@ -1,5 +1,8 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; +import com.jsowell.common.protocol.RpcResponse; +import com.jsowell.common.protocol.SyncPromise; +import com.jsowell.common.util.RpcUtil; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; @@ -12,7 +15,7 @@ public class RpcResponseHandler extends SimpleChannelInboundHandler if(syncPromise != null) { // 设置响应结果 - syncPromise.setRpcResponse(msg); + // syncPromise.setRpcResponse(msg); // 唤醒外部线程 syncPromise.wake(); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcServer.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcServer.java similarity index 98% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcServer.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcServer.java index ab72fbabe..9758ba7ef 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/RpcServer.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/RpcServer.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/ServerChannelInitializer.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/ServerChannelInitializer.java similarity index 94% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/ServerChannelInitializer.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/ServerChannelInitializer.java index 36858b982..ec9f4a64f 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/ServerChannelInitializer.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/ServerChannelInitializer.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcClient.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcClient.java similarity index 65% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcClient.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcClient.java index b239e92a3..cefc2a90e 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcClient.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcClient.java @@ -1,6 +1,6 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; -import java.util.concurrent.TimeUnit; +import com.jsowell.common.protocol.RpcRequest; public class TestRpcClient { public static void main(String[] args) throws Exception{ @@ -13,9 +13,9 @@ public class TestRpcClient { rpcRequest.setParam("参数1"); try { - System.out.println("thread1发送请求"); - RpcResponse rpcResponse = RpcUtil.send(rpcRequest, 5, TimeUnit.SECONDS); - System.out.println("thread1处理结果:" + rpcResponse); + // System.out.println("thread1发送请求"); + // RpcResponse rpcResponse = RpcUtil.send(rpcRequest, 5, TimeUnit.SECONDS); + // System.out.println("thread1处理结果:" + rpcResponse); } catch (Exception e) { throw new RuntimeException(e); } @@ -29,9 +29,9 @@ public class TestRpcClient { rpcRequest2.setParam("参数2"); try { - System.out.println("thread2发送请求"); - RpcResponse rpcResponse = RpcUtil.send(rpcRequest2, 2, TimeUnit.SECONDS); - System.out.println("thread2处理结果:" + rpcResponse); + // System.out.println("thread2发送请求"); + // RpcResponse rpcResponse = RpcUtil.send(rpcRequest2, 2, TimeUnit.SECONDS); + // System.out.println("thread2处理结果:" + rpcResponse); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcServer.java b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcServer.java similarity index 79% rename from jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcServer.java rename to jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcServer.java index b346613c0..54d9d932b 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/rpc/TestRpcServer.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/rpc/TestRpcServer.java @@ -1,4 +1,4 @@ -package com.jsowell.netty.rpc; +package com.jsowell.pile.rpc; public class TestRpcServer { public static void main(String[] args) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java index 60cd18d25..5ab29f8c2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java @@ -2,9 +2,12 @@ package com.jsowell.pile.service; import com.google.common.collect.Lists; import com.jsowell.common.constant.CacheConstants; +import com.jsowell.common.core.domain.ykc.YKCDataProtocol; import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.enums.ykc.ChargingFailedReasonEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.PileBillingTemplate; import com.jsowell.pile.domain.PileFirmwareInfo; @@ -26,6 +29,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; import java.util.List; +import java.util.Objects; @Service public class PileRemoteService { @@ -287,8 +291,60 @@ public class PileRemoteService { /** * 预约充电指令/预约指令 + * @return result: 1-成功; 0-失败 */ - public void reservationCharging(ReservationChargingCommand command) { - ykcPushCommandService.pushReservationChargingCommand(command); + public String reservationCharging(ReservationChargingCommand command) { + String result = "1"; + byte[] bytes = ykcPushCommandService.pushReservationChargingCommand(command); + // 解析结果 + if (Objects.isNull(bytes)) { + result = "0"; + } else { + YKCDataProtocol ykcDataProtocol = new YKCDataProtocol(bytes); + byte[] msgBody = ykcDataProtocol.getMsgBody(); + int startIndex = 0; + int length = 16; + + // 交易流水号 + byte[] transactionCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String transactionCode = BytesUtil.bcd2Str(transactionCodeByteArr); + + // 桩编码 + startIndex += length; + length = 7; + byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String pileSn = BytesUtil.bcd2Str(pileSnByteArr); + + // 枪口号 + startIndex += length; + length = 1; + byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr); + + // 启动结果 0x00失败 0x01成功 + startIndex += length; + length = 1; + byte[] resultCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String resultCode = BytesUtil.bcd2Str(resultCodeByteArr); + + if (StringUtils.equals(resultCode, "00")) { + result = "0"; + } else { + result = "1"; + } + + // 失败原因 + startIndex += length; + length = 1; + byte[] failedReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String failedReason = BytesUtil.bcd2Str(failedReasonByteArr); + String failedReasonMsg = ChargingFailedReasonEnum.getMsgByCode(Integer.parseInt(failedReason, 16)); + + log.info("0x59预约充电响应sync, 交易流水号:{}, 桩SN:{}, 枪口号:{}, 结果:{}, 失败原因:{}", + transactionCode, pileSn, connectorCode, resultCode, failedReasonMsg); + } + + return result; } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java index 6f04543cd..c40b6d290 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java @@ -66,7 +66,7 @@ public interface PileReservationInfoService { void updateReservationStatus(PileReservationDTO dto); - void updateReservation(PileReservationDTO dto); + int updateReservation(PileReservationDTO dto); void personPileStopCharging(PersonPileStopChargingDTO dto); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/YKCPushCommandService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/YKCPushCommandService.java index c727f047c..55612e72a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/YKCPushCommandService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/YKCPushCommandService.java @@ -82,5 +82,6 @@ public interface YKCPushCommandService { * 发送预约充电命令 * @param command */ - void pushReservationChargingCommand(ReservationChargingCommand command); + byte[] pushReservationChargingCommand(ReservationChargingCommand command); + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 13d3c2a1e..1f3a44dd6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -3765,17 +3765,25 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { ? OrderStatusEnum.IN_THE_CHARGING.getValue() : OrderStatusEnum.ORDER_CLOSE_TIMEOUT.getValue(); + PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(chargingStartupResult.getPileSn()); + + BigDecimal payAmount = Constants.WHITELIST_DEFAULT_AMOUNT; + // 订单基本信息 OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() .orderCode(orderCode) .transactionCode(transactionCode) .orderStatus(status) + .merchantId(pileBasicInfo.getMerchantId() + "") + .stationId(pileBasicInfo.getStationId() + "") .pileSn(chargingStartupResult.getPileSn()) .connectorCode(chargingStartupResult.getConnectorCode()) .pileConnectorCode(chargingStartupResult.getPileSn() + chargingStartupResult.getConnectorCode()) .startMode("6") - .payStatus(Constants.TWO) + .payStatus(Constants.ONE) .payMode(Constants.THREE) + .payAmount(payAmount) + .payTime(DateUtils.getNowDate()) .orderAmount(BigDecimal.ZERO) .virtualAmount(BigDecimal.ZERO) .settleAmount(BigDecimal.ZERO) @@ -3789,6 +3797,17 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { .orderDetail(null) .build(); pileTransactionService.doCreateOrder(createOrderTransactionDTO); + + OrderPayRecord principalPayRecord = OrderPayRecord.builder() + .orderCode(orderCode) + .payMode(OrderPayRecordEnum.WHITELIST_PAYMENT.getValue()) + .payAmount(payAmount) + .acquirer(AcquirerEnum.LOCAL.getValue()) + .createBy("system") + .createTime(DateUtils.getNowDate()) + .delFlag(DelFlagEnum.NORMAL.getValue()) + .build(); + orderPayRecordService.batchInsert(Lists.newArrayList(principalPayRecord)); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java index b7c15ded2..81f23b682 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java @@ -407,10 +407,10 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic * @param dto */ @Override - public void updateReservation(PileReservationDTO dto) { + public int updateReservation(PileReservationDTO dto) { PileReservationInfo pileReservationInfo = pileReservationInfoMapper.selectByPrimaryKey(Integer.valueOf(dto.getReservedId())); if (pileReservationInfo == null) { - return; + return 0; } // 操作 0x01:启动 0x02:取消 0x03:修改 @@ -471,12 +471,11 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic .reservedEndTime(pileReservationInfo.getEndTime().toLocalTime()) .amount(Constants.WHITELIST_DEFAULT_AMOUNT) .build(); - pileRemoteService.reservationCharging(command); - - // 从redis中获取回复, 3秒没有获取到判为超时 - - - this.insertOrUpdateSelective(pileReservationInfo); + String result = pileRemoteService.reservationCharging(command); + if (StringUtils.equals(result, Constants.ONE)) { + return this.insertOrUpdateSelective(pileReservationInfo); + } + return 0; } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java index 01100616c..72de5fe7a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java @@ -10,12 +10,13 @@ import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil; import com.jsowell.pile.domain.ykcCommond.*; +import com.jsowell.common.util.RpcUtil; +import com.jsowell.common.protocol.SyncPromise; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import io.netty.buffer.ByteBuf; -import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; @@ -29,6 +30,8 @@ import java.time.LocalTime; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; /** * 向充电桩发送指令service @@ -36,6 +39,7 @@ import java.util.Objects; @Slf4j @Service public class YKCPushCommandServiceImpl implements YKCPushCommandService { + @Autowired private PileBillingTemplateService pileBillingTemplateService; @@ -70,14 +74,95 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { * @param frameTypeCode * @return */ - public boolean push(byte[] msg, String pileSn, Enum frameTypeCode) { + // public boolean push(byte[] msg, String pileSn, Enum frameTypeCode) { + // // 通过桩编号获取channel + // ChannelHandlerContext ctx = PileChannelEntity.getChannelByPileSn(pileSn); + // String value = ((YKCFrameTypeCode) frameTypeCode).getValue(); + // if (Objects.isNull(ctx)) { + // log.error("push命令[{}]失败, 桩号:{}无法获取到长连接, 请检查充电桩连接状态!", value, pileSn); + // return false; + // } + // /* + // 拼接报文 + // */ + // // 起始标志 + // byte[] head = new byte[]{0x68}; + // + // // 序列号域 + // byte[] serialNumber = new byte[]{0x00, 0x00}; + // + // // 加密标志 + // byte[] encryptFlag = new byte[]{0x00}; + // + // // 帧类型标志 + // byte[] frameType = new byte[]{(byte) ((YKCFrameTypeCode) frameTypeCode).getCode()}; + // + // // 序列号域+加密标志+帧类型标志+消息体 + // byte[] temp = Bytes.concat(serialNumber, encryptFlag, frameType, msg); + // + // // 数据长度 + // byte[] length = BytesUtil.intToBytes(temp.length, 1); + // + // // 帧校验域 + // byte[] crc = BytesUtil.intToBytes(CRC16Util.calcCrc16(temp)); + // + // // 返回报文 + // byte[] writeMsg = Bytes.concat(head, length, temp, crc); + // + // // 返回完整的报文 string类型 + // String wholeMsg = BytesUtil.binary(writeMsg, 16); + // ByteBuf byteBuf = ctx.channel().alloc().buffer().writeBytes(writeMsg); + // ChannelFuture channelFuture = ctx.channel().writeAndFlush(byteBuf); + // channelFuture.addListener((ChannelFutureListener) channelFutureListener -> { + // // 检查操作的状态 + // if (channelFutureListener.isSuccess()) { + // log.info("【push结果===>成功】, pileSn:{}, remoteAddress:{}, channelId:{}, 帧类型:{}, 报文:{}", + // pileSn, ctx.channel().remoteAddress(), ctx.channel().id(), value, wholeMsg); + // } else { + // // 如果发生错误,则访问描述原因的Throwable + // Throwable cause = channelFutureListener.cause(); + // log.info("【push结果===>失败】, pileSn:{}, remoteAddress:{}, channelId:{}, 帧类型:{}, 报文:{}", + // pileSn, ctx.channel().remoteAddress(), ctx.channel().id(), value, wholeMsg); + // log.error("push发送命令失败, pileSn:{}", pileSn, cause); + // } + // }); + // + // // 保存报文 + // String frameTypeStr = YKCUtils.frameType2Str(((YKCFrameTypeCode) frameTypeCode).getBytes()); + // if (frameTypeList.contains(frameTypeStr)) { + // pileMsgRecordService.save(pileSn, null, frameTypeStr, null, wholeMsg); + // } + // return true; + // } + + public byte[] send(byte[] msg, String pileSn, Enum frameTypeCode) throws Exception { + return this.send(msg, pileSn, frameTypeCode, 5, TimeUnit.SECONDS); + } + + public byte[] send(byte[] msg, String pileSn, Enum frameTypeCode, long timeout, TimeUnit unit) throws Exception { // 通过桩编号获取channel ChannelHandlerContext ctx = PileChannelEntity.getChannelByPileSn(pileSn); - String value = ((YKCFrameTypeCode) frameTypeCode).getValue(); + String value = ((YKCFrameTypeCode) frameTypeCode).getValue(); // 帧类型名称 if (Objects.isNull(ctx)) { log.error("push命令[{}]失败, 桩号:{}无法获取到长连接, 请检查充电桩连接状态!", value, pileSn); - return false; + throw new NullPointerException("channel"); } + if(msg == null) { + throw new NullPointerException("msg"); + } + if(timeout <= 0) { + throw new IllegalArgumentException("timeout must greater than 0"); + } + + // 创造一个容器,用于存放当前线程与rpcClient中的线程交互 + SyncPromise syncPromise = new SyncPromise(); + + // 消息id = channelId + 帧类型(例如: "0x34") + String msgId = ctx.channel().id().toString() + "_" + YKCUtils.frameType2Str(((YKCFrameTypeCode) frameTypeCode).getBytes()); + // log.info("同步获取响应数据-发送消息, msgId:{}", msgId); + RpcUtil.getSyncPromiseMap().put(msgId, syncPromise); + + // 发送消息,此处如果发送玩消息并且在get之前返回了结果,下一行的get将不会进入阻塞,也可以顺利拿到结果 /* 拼接报文 */ @@ -123,12 +208,26 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { } }); + // 等待获取结果 + byte[] rpcResponse = syncPromise.get2(timeout, unit); + + if(rpcResponse == null) { + if(syncPromise.isTimeout()) { + throw new TimeoutException("等待响应结果超时"); + } else{ + throw new Exception("其他异常"); + } + } + + // 移除容器 + RpcUtil.getSyncPromiseMap().remove(msgId); + // 保存报文 String frameTypeStr = YKCUtils.frameType2Str(((YKCFrameTypeCode) frameTypeCode).getBytes()); if (frameTypeList.contains(frameTypeStr)) { pileMsgRecordService.save(pileSn, null, frameTypeStr, null, wholeMsg); } - return true; + return rpcResponse; } /** @@ -178,7 +277,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { byte[] accountBalanceByteArr = YKCUtils.getPriceByte(chargeAmount.toString(), 2); byte[] msgBody = Bytes.concat(orderIdByteArr, pileSnByteArr, connectorCodeByteArr, logicCardNumByteArr, physicsCardNumByteArr, accountBalanceByteArr); - this.push(msgBody, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_START_CHARGING_CODE); + try { + this.send(msgBody, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_START_CHARGING_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("【=====平台下发充电指令=====】:订单id:{}, 桩号:{}, 枪口号:{}, 逻辑卡号:{}, 物理卡号:{}, 账户余额:{}", transactionCode, pileSn, BytesUtil.bcd2Str(connectorCodeByteArr), logicCardNum, physicsCardNum, chargeAmount); } @@ -194,7 +297,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { String connectorCode = command.getConnectorCode(); // 远程停机 byte[] msgBody = Bytes.concat(BytesUtil.str2Bcd(pileSn), BytesUtil.str2Bcd(connectorCode)); - this.push(msgBody, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_STOP_CHARGING_CODE); + try { + this.send(msgBody, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_STOP_CHARGING_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("【=====平台下发指令=====】:远程停止充电,桩号:{},枪口号:{}", pileSn, connectorCode); } @@ -203,7 +310,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { String pileSn = command.getPileSn(); String connectorCode = command.getConnectorCode(); byte[] msg = BytesUtil.str2Bcd(pileSn + connectorCode); - this.push(msg, pileSn, YKCFrameTypeCode.READ_REAL_TIME_MONITOR_DATA_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.READ_REAL_TIME_MONITOR_DATA_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("【=====平台下发指令=====】:获取充电桩:{} 的 {} 枪口实时数据信息", pileSn, connectorCode); } @@ -212,7 +323,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { String pileSn = command.getPileSn(); byte[] msg = BytesUtil.str2Bcd(pileSn + Constants.ZERO_ONE); log.info("【=====平台下发指令=====】:重启充电桩:,{}", pileSn); - this.push(msg, pileSn, YKCFrameTypeCode.REMOTE_RESTART_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.REMOTE_RESTART_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } @@ -254,7 +369,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { byte[] msg = Bytes.concat(pileSnByteArr, qrCodeTypeByteArr, qrCodePrefixLengthByteArr, qrCodePrefixByteArr); // push消息 - boolean result = this.push(msg, pileSn, YKCFrameTypeCode.REMOTE_ISSUE_QRCODE_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.REMOTE_ISSUE_QRCODE_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("【=====平台下发指令=====】 pileSn:{}, 下发二维码,地址为:{}", pileSn, qrCodePrefix); } @@ -276,7 +395,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 拼装msg byte[] msg = Bytes.concat(pileSnByteArr, dateBytes); - this.push(msg, pileSn, YKCFrameTypeCode.TIME_CHECK_SETTING_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.TIME_CHECK_SETTING_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("[充电桩:{}对时, 时间:{}, CP56Time2a:{}]", pileSn, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, date), BytesUtil.binary(dateBytes, 16)); } @@ -293,18 +416,14 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { byte[] messageBody = pileBillingTemplateService.generateBillingTemplateMsgBody(pileSn, billingTemplateVO); // 发送 if (messageBody != null) { - this.push(messageBody, pileSn, YKCFrameTypeCode.BILLING_TEMPLATE_SETTING_CODE); + try { + this.send(messageBody, pileSn, YKCFrameTypeCode.BILLING_TEMPLATE_SETTING_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } } - public static void main(String[] args) { - System.out.println(Constants.updateServerPort); - String numHex = Integer.toHexString(21); - byte[] bytes = BytesUtil.hexString2Bytes(numHex); - System.out.println(bytes); - - } - @Override public void pushUpdateFileCommand(UpdateFirmwareCommand command) { List pileSns = command.getPileSnList(); @@ -360,7 +479,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { byte[] msgBody = Bytes.concat(pileSnByteArr, pileModelType, ratedPowerByteArr, updateServerAddressByteArr, updateServerPortByteArr, userNameByteArr, passwordByteArr, filePathByteArr, performTypeByteArr, overTimeByteArr); - this.push(msgBody, pileModelInfoVO.getPileSn(), YKCFrameTypeCode.REMOTE_UPDATE_CODE); + try { + this.send(msgBody, pileModelInfoVO.getPileSn(), YKCFrameTypeCode.REMOTE_UPDATE_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } log.info("【=====平台下发指令=====】:远程更新, 桩号:{}, 类型:{}, 额定功率:{}, 服务器地址:{}, 端口号:{}, 用户名:{}, 密码:{}, 文件路径:{}", pileModelInfoVO.getPileSn(), pileModelType, BytesUtil.bcd2Str(ratedPowerByteArr), BytesUtil.binary(updateServerAddressByteArr, 16), BytesUtil.binary(updateServerPortByteArr, 16), BytesUtil.binary(userNameByteArr, 16), BytesUtil.binary(passwordByteArr, 16), @@ -390,7 +513,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { byte[] msg = Bytes.concat(pileSnByteArr, workingStateByteArr, maxPowerByteArr); - this.push(msg, pileSn, YKCFrameTypeCode.CHARGING_PILE_WORKING_PARAMETER_SETTING_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.CHARGING_PILE_WORKING_PARAMETER_SETTING_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } /** @@ -417,7 +544,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 拼装msg信息 byte[] msg = Bytes.concat(pileSnByteArr, pileType); - this.push(msg, pileSn, YKCFrameTypeCode.QUERY_PILE_WORK_PARAMS_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.QUERY_PILE_WORK_PARAMS_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } /** @@ -443,7 +574,11 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 拼装msg信息 byte[] msg = Bytes.concat(pileSnByteArr, connectorCodeByteArr, logicByteArr, priceByte); - this.push(msg, pileSn, YKCFrameTypeCode.REMOTE_ACCOUNT_BALANCE_UPDATE_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.REMOTE_ACCOUNT_BALANCE_UPDATE_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } /** @@ -476,16 +611,21 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 拼装msg信息 byte[] msg = Bytes.concat(pileSnByteArr, connectorCodeByteArr, operateByteArr, obligateByteArr); - this.push(msg, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_GROUND_LOCK_CODE); + try { + this.send(msg, pileSn, YKCFrameTypeCode.REMOTE_CONTROL_GROUND_LOCK_CODE); + } catch (Exception e) { + throw new RuntimeException(e); + } } /** * 发送预约充电命令 * * @param command + * @return */ @Override - public void pushReservationChargingCommand(ReservationChargingCommand command) { + public byte[] pushReservationChargingCommand(ReservationChargingCommand command) { // 交易流水号 String transactionCode = command.getTransactionCode(); byte[] transactionCodeArr = BytesUtil.str2Bcd(transactionCode); @@ -541,9 +681,17 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { reservationTypeByteArr, verifyIdentityByteArr, vin1ByteArr, vin2ByteArr, vin3ByteArr, reservedStartTimeByteArr, reservedEndTimeByteArr, amountByteArr); - this.push(msg, pileSn, YKCFrameTypeCode.RESERVATION_CHARGING_SETUP_CODE); + byte[] response; + try { + response = this.send(msg, pileSn, YKCFrameTypeCode.RESERVATION_CHARGING_SETUP_CODE); + } catch (Exception e) { + log.error("发送消息异常", e); + response = null; + } log.info("【=====平台下发指令=====】: 预约充电指令, 交易流水号:{}, 桩编号:{}, 枪口号:{}, 操作:{}, 身份验证:{}, 开始时间:{}, 结束时间:{}, 启动金额:{}", transactionCode, pileSn, connectorCode, operation, verifyIdentity, DateUtils.formatDateTime(reservedStartTime), DateUtils.formatDateTime(reservedEndTime), amount); + return response; } + }