From 9ad40a7717b1441c590a82409de1c239e10b0b5a Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 9 Jan 2024 14:22:40 +0800 Subject: [PATCH 1/4] update --- .../test/java/SpringBootTestController.java | 1077 ++++++++++++++--- .../pile/service/OrderBasicInfoService.java | 4 +- .../impl/OrderBasicInfoServiceImpl.java | 56 +- .../DelayMerchantProgramLogic.java | 13 +- 4 files changed, 891 insertions(+), 259 deletions(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 2a425e357..611b571f5 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -688,45 +688,10 @@ public class SpringBootTestController { // 需要重新分账的订单信息(针对未分账的订单) public JSONArray getPaymentList() { String jsonArrayString = "[" + - "{\"orderCode\":\"C48781169027\", \"settleAmount\":\"20.00\", \"paymentId\":\"002212023081623202010537906671250030592\"}" + - "{\"orderCode\":\"C48768679959\", \"settleAmount\":\"19.50\", \"paymentId\":\"002212023081708302410538045099258040320\"}" + - "{\"orderCode\":\"C23468136430\", \"settleAmount\":\"9.91\", \"paymentId\":\"002212023081713101610538115533954953216\"}" + - "{\"orderCode\":\"C25555403165\", \"settleAmount\":\"50.00\", \"paymentId\":\"002212023081719463510538215268906479616\"}" + - "{\"orderCode\":\"C69067667860\", \"settleAmount\":\"11.07\", \"paymentId\":\"002212023081719544110538217306568863744\"}" + - "{\"orderCode\":\"C69618745399\", \"settleAmount\":\"13.46\", \"paymentId\":\"002212023081720324810538226898182942720\"}" + - "{\"orderCode\":\"C61465564597\", \"settleAmount\":\"9.62\", \"paymentId\":\"002212023081721125110538236978358140928\"}" + - "{\"orderCode\":\"C23460156498\", \"settleAmount\":\"17.02\", \"paymentId\":\"002212023081723134310538267393528758272\"}" + - "{\"orderCode\":\"C80815399766\", \"settleAmount\":\"14.74\", \"paymentId\":\"002212023081723563110538278166862823424\"}" + - "{\"orderCode\":\"C21506925137\", \"settleAmount\":\"11.19\", \"paymentId\":\"002212023081801290810538301472957952000\"}" + - "{\"orderCode\":\"C63972551840\", \"settleAmount\":\"45.08\", \"paymentId\":\"002212023081801571410538308547201912832\"}" + - "{\"orderCode\":\"C23424079046\", \"settleAmount\":\"0.55\", \"paymentId\":\"002212023081814401510538500563571302400\"}" + - "{\"orderCode\":\"C25593089126\", \"settleAmount\":\"15.75\", \"paymentId\":\"002212023081814445010538501718643294208\"}" + - "{\"orderCode\":\"C82505710240\", \"settleAmount\":\"9.40\", \"paymentId\":\"002212023081815575310538520102988144640\"}" + - "{\"orderCode\":\"C29587652759\", \"settleAmount\":\"19.07\", \"paymentId\":\"002212023081818234110538556794644709376\"}" + - "{\"orderCode\":\"C80285182706\", \"settleAmount\":\"32.94\", \"paymentId\":\"002212023081818540910538564459668590592\"}" + - "{\"orderCode\":\"C63159197277\", \"settleAmount\":\"18.64\", \"paymentId\":\"002212023081823034410538627272334213120\"}" + - "{\"orderCode\":\"C88261172949\", \"settleAmount\":\"12.11\", \"paymentId\":\"002212023081909361510538786448785969152\"}" + - "{\"orderCode\":\"C40533396245\", \"settleAmount\":\"6.37\", \"paymentId\":\"002212023081910060410538793953300623360\"}" + - "{\"orderCode\":\"C23679790084\", \"settleAmount\":\"18.97\", \"paymentId\":\"002212023081914414910538863347327717376\"}" + - "{\"orderCode\":\"C88649160434\", \"settleAmount\":\"12.77\", \"paymentId\":\"002212023081914483310538865042690035712\"}" + - "{\"orderCode\":\"C21981544417\", \"settleAmount\":\"15.69\", \"paymentId\":\"002212023081917162910538902270808576000\"}" + - "{\"orderCode\":\"C67333775763\", \"settleAmount\":\"50.00\", \"paymentId\":\"002212023081921585210538973335899062272\"}" + - "{\"orderCode\":\"C44109570322\", \"settleAmount\":\"14.54\", \"paymentId\":\"002212023081923332310538997121248022528\"}" + - "{\"orderCode\":\"C63706245256\", \"settleAmount\":\"33.30\", \"paymentId\":\"002212023081923342110538997364304719872\"}" + - "{\"orderCode\":\"C29969981188\", \"settleAmount\":\"11.20\", \"paymentId\":\"002212023082000004010539003987659247616\"}" + - "{\"orderCode\":\"C82355534665\", \"settleAmount\":\"14.28\", \"paymentId\":\"002212023082001373010539028356149788672\"}" + - "{\"orderCode\":\"C48933098939\", \"settleAmount\":\"18.02\", \"paymentId\":\"002212023082011300710539177493541588992\"}" + - "{\"orderCode\":\"C61809096620\", \"settleAmount\":\"25.86\", \"paymentId\":\"002212023082017095410539263001965514752\"}" + - "{\"orderCode\":\"C65459141793\", \"settleAmount\":\"39.18\", \"paymentId\":\"002212023082017330610539268838730301440\"}" + - "{\"orderCode\":\"C67350802338\", \"settleAmount\":\"23.15\", \"paymentId\":\"002212023082017545610539274332166238208\"}" + - "{\"orderCode\":\"C27249627095\", \"settleAmount\":\"14.39\", \"paymentId\":\"002212023082020023510539306457748918272\"}" + - "{\"orderCode\":\"C21778157263\", \"settleAmount\":\"14.85\", \"paymentId\":\"002212023082023031810539351935269900288\"}" + - "{\"orderCode\":\"C23297089667\", \"settleAmount\":\"18.00\", \"paymentId\":\"002212023082023050310539352376170663936\"}" + - "{\"orderCode\":\"C23861812497\", \"settleAmount\":\"16.40\", \"paymentId\":\"002212023082101473810539393293531463680\"}" + - "{\"orderCode\":\"C40708262770\", \"settleAmount\":\"3.86\", \"paymentId\":\"002212023082112463110539559107157479424\"}" + - "{\"orderCode\":\"C82353063713\", \"settleAmount\":\"4.44\", \"paymentId\":\"002212023082118120310539641030797856768\"}" + - "{\"orderCode\":\"C63577734664\", \"settleAmount\":\"20.50\", \"paymentId\":\"002212023082318185810540367545073479680\"}" + - "{\"orderCode\":\"C21548156353\", \"settleAmount\":\"25.94\", \"paymentId\":\"002212023082016540910539259035753828352\"}" + + "{\"orderCode\":\"C21350495809\", \"settleAmount\":\"12.75\", \"paymentId\":\"002212023102607502510563402189752061952\"}" + + "{\"orderCode\":\"C48300427818\", \"settleAmount\":\"14.99\", \"paymentId\":\"002212023102717582410563917580340862976\"}" + + "{\"orderCode\":\"C42052601299\", \"settleAmount\":\"5.91\", \"paymentId\":\"002212023102916284510564619797265641472\"}" + + "{\"orderCode\":\"C80224392857\", \"settleAmount\":\"29.91\", \"paymentId\":\"002212023103116134010565340774007672832\"}" + "]"; return JSONArray.parseArray(jsonArrayString); } @@ -740,7 +705,7 @@ public class SpringBootTestController { // TODO 获取默认结算账户,如需分给对应商户就填写正确的汇付会员id // AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.getDefault(); AdapayMemberAccount adapayMemberAccount = new AdapayMemberAccount(); - adapayMemberAccount.setAdapayMemberId("ACM23489463"); + adapayMemberAccount.setAdapayMemberId("ACM67738893"); for (int i = 0; i < paymentList.size(); i++) { JSONObject jsonObject = (JSONObject) paymentList.get(i); BigDecimal confirmAmt = jsonObject.getBigDecimal("settleAmount"); // 确认金额就是结算金额 @@ -917,166 +882,878 @@ public class SpringBootTestController { public List getPaymentIdList() { List list = Lists.newArrayList(); - list.add("002212023080911513910535196643457490944"); - list.add("002212023080917310510535282067647512576"); - list.add("002212023080920233510535325478161035264"); - list.add("002212023081014192310535596211322900480"); - list.add("002212023081018421610535662367635296256"); - list.add("002212023081019214010535672284102168576"); - list.add("002212023081109372710535887647667904512"); - list.add("002212023081121413210536069867639128064"); - list.add("002212023081121564310536073688129978368"); - list.add("002212023081210490210536268050325061632"); - list.add("002212023081211435810536281872507260928"); - list.add("002212023081212080910536287962106843136"); - list.add("002212023081214515010536329151408025600"); - list.add("002212023081218044810536377716367609856"); - list.add("002212023081218535510536390074875957248"); - list.add("002212023081219335410536400135797932032"); - list.add("002212023081219390910536401457480249344"); - list.add("002212023081220582410536421402983784448"); - list.add("002212023081222104810536439622934351872"); - list.add("002212023081222402610536447078682574848"); - list.add("002212023081222442410536448077976109056"); - list.add("002212023081300391510536476979343298560"); - list.add("002212023081311123510536636362825416704"); - list.add("002212023081318021310536739453994455040"); - list.add("002212023081318345110536747662425870336"); - list.add("002212023081320284510536776326702059520"); - list.add("002212023081321173110536788601484410880"); - list.add("002212023081321182410536788825176031232"); - list.add("002212023081322345010536808056227643392"); - list.add("002212023081322521310536812432816095232"); - list.add("002212023081400063010536831127385722880"); - list.add("002212023081408252910536956698702794752"); - list.add("002212023081414495310537053436751183872"); - list.add("002212023081417413510537096645896372224"); - list.add("002212023081513031010537388967544909824"); - list.add("002212023081515552410537432312858988544"); - list.add("002212023081517180810537453132881428480"); - list.add("002212023081520335810537502415345254400"); - list.add("002212023081614042610537766773420998656"); - list.add("002212023081615522710537793959720902656"); - list.add("002212023081617341610537819581457383424"); - list.add("002212023081619164910537845388505579520"); - list.add("002212023081620160810537860315156299776"); - list.add("002212023081623202010537906671250030592"); - list.add("002212023081708302410538045099258040320"); - list.add("002212023081713101610538115533954953216"); - list.add("002212023081719463510538215268906479616"); - list.add("002212023081719544110538217306568863744"); - list.add("002212023081720324810538226898182942720"); - list.add("002212023081721125110538236978358140928"); - list.add("002212023081723134310538267393528758272"); - list.add("002212023081723563110538278166862823424"); - list.add("002212023081801290810538301472957952000"); - list.add("002212023081801571410538308547201912832"); - list.add("002212023081814401510538500563571302400"); - list.add("002212023081814445010538501718643294208"); - list.add("002212023081815575310538520102988144640"); - list.add("002212023081818234110538556794644709376"); - list.add("002212023081818540910538564459668590592"); - list.add("002212023081823034410538627272334213120"); - list.add("002212023081909361510538786448785969152"); - list.add("002212023081910060410538793953300623360"); - list.add("002212023081914414910538863347327717376"); - list.add("002212023081914483310538865042690035712"); - list.add("002212023081917162910538902270808576000"); - list.add("002212023081921585210538973335899062272"); - list.add("002212023081923332310538997121248022528"); - list.add("002212023081923342110538997364304719872"); - list.add("002212023082000004010539003987659247616"); - list.add("002212023082001373010539028356149788672"); - list.add("002212023082011300710539177493541588992"); - list.add("002212023082016540910539259035753828352"); - list.add("002212023082017095410539263001965514752"); - list.add("002212023082017330610539268838730301440"); - list.add("002212023082017545610539274332166238208"); - list.add("002212023082020023510539306457748918272"); - list.add("002212023082023031810539351935269900288"); - list.add("002212023082023050310539352376170663936"); - list.add("002212023082101473810539393293531463680"); - list.add("002212023082112463110539559107157479424"); - list.add("002212023082118120310539641030797856768"); - list.add("002212023082121483910539695537059889152"); - list.add("002212023082122263310539705078166159360"); - list.add("002212023082123024210539714171989983232"); - list.add("002212023082201301910539751323859603456"); - list.add("002212023082208283110539856568383868928"); - list.add("002212023082209445810539875807564320768"); - list.add("002212023082212211510539915133888049152"); - list.add("002212023082222485010540073070730919936"); - list.add("002212023082223110410540078668262068224"); - list.add("002212023082303251710540142642307284992"); - list.add("002212023082310485210540254273614270464"); - list.add("002212023082318185810540367545073479680"); - list.add("002212023082320104610540395681495289856"); - list.add("002212023082322321710540431295800131584"); - list.add("002212023082323050110540439531292475392"); - list.add("002212023082400202710540458514266640384"); - list.add("002212023082407535410540572631681912832"); - list.add("002212023082410263510540611054854549504"); - list.add("002212023082415553510540693851089293312"); - list.add("002212023082417255410540716578065797120"); - list.add("002212023082419232110540746136356716544"); - list.add("002212023082421511710540783365802733568"); - list.add("002212023082422135610540789065768861696"); - list.add("002212023082422222510540791200639168512"); - list.add("002212023082501275310540837875738103808"); - list.add("002212023082503132510540864431038025728"); - list.add("002212023082508252410540942946259795968"); - list.add("002212023082511184310540986562784280576"); - list.add("002212023082517070610541074234499043328"); - list.add("002212023082519312910541110573052739584"); - list.add("002212023082519341910541111284830322688"); - list.add("002212023082521180010541137375208747008"); - list.add("002212023082521491510541145239486980096"); - list.add("002212023082523595010541178105344286720"); - list.add("002212023082607105610541286592551243776"); - list.add("002212023082613400010541384506033324032"); - list.add("002212023082615082910541406774347591680"); - list.add("002212023082615180910541409206988607488"); - list.add("002212023082618375910541459495911522304"); - list.add("002212023082620292710541487547519488000"); - list.add("002212023082621233410541501166566658048"); - list.add("002212023082622582110541525018307883008"); - list.add("002212023082623175210541529929854644224"); - list.add("002212023082702085010541572954147409920"); - list.add("002212023082707361210541655341507989504"); - list.add("002212023082710153410541695444334665728"); - list.add("002212023082711533210541720097936097280"); - list.add("002212023082715195710541772044715704320"); - list.add("002212023082716085010541784348720672768"); - list.add("002212023082717350010541806032763240448"); - list.add("002212023082717392610541807147967361024"); - list.add("002212023082719092910541829808768462848"); - list.add("002212023082720560310541856629967798272"); - list.add("002212023082722104510541875429674397696"); - list.add("002212023082807290510542015937137758208"); - list.add("002212023082809432810542049753385185280"); - list.add("002212023082815182010542134027438305280"); - list.add("002212023082817031610542160436842647552"); - list.add("002212023082817560110542173710710362112"); - list.add("002212023082820190210542209703119843328"); - list.add("002212023082909023810542401868354105344"); - list.add("002212023082911163810542435589726388224"); - list.add("002212023082911591510542446315247861760"); - list.add("002212023082918223310542542776049119232"); - list.add("002212023082920303510542574995091816448"); - list.add("002212023082922384010542607228788793344"); - list.add("002212023083011241810542799908620189696"); - list.add("002212023083012503410542821616979169280"); - list.add("002212023083014392510542849009854808064"); - list.add("002212023083017544410542898163723177984"); - list.add("002212023083019034910542915548445192192"); - list.add("002212023083021044010542945959919026176"); - list.add("002212023083022064410542961579917463552"); - list.add("002212023083022123310542963045776936960"); - list.add("002212023083112214210543176740885037056"); - list.add("002212023083113225410543192143001071616"); - list.add("002212023083118093510543264288814686208"); - list.add("002212023083118583210543276606345605120"); - list.add("002212023083119484410543289239890321408"); + list.add("002212023093021493610554191294142091264"); + list.add("002212023100102493110554266767129260032"); + list.add("002212023100107160310554333843078488064"); + list.add("002212023100108063810554346573874163712"); + list.add("002212023100109254310554366476556664832"); + list.add("002212023100110105510554377850984837120"); + list.add("002212023100110152110554378965465935872"); + list.add("002212023100111453810554401687851679744"); + list.add("002212023100112171510554409644528476160"); + list.add("002212023100114252110554441883209412608"); + list.add("002212023100114481110554447625852211200"); + list.add("002212023100115433810554461580441640960"); + list.add("002212023100120052710554527470191280128"); + list.add("002212023100202302910554624367348146176"); + list.add("002212023100207404210554702433816387584"); + list.add("002212023100209270010554729186313850880"); + list.add("002212023100209373210554731837943443456"); + list.add("002212023100209451810554733791104987136"); + list.add("002212023100212320510554775765620015104"); + list.add("002212023100214280310554804946443612160"); + list.add("002212023100214504710554810668848496640"); + list.add("002212023100214575210554812451984949248"); + list.add("002212023100215025510554813722138230784"); + list.add("002212023100215595110554828048920207360"); + list.add("002212023100217121910554846287728955392"); + list.add("002212023100217440610554854285079969792"); + list.add("002212023100220090810554890786694213632"); + list.add("002212023100221092910554905973836972032"); + list.add("002212023100307064510555056277579362304"); + list.add("002212023100307503010555067288496844800"); + list.add("002212023100309344810555093536337776640"); + list.add("002212023100310301810555107504090509312"); + list.add("002212023100310303710555107584157138944"); + list.add("002212023100311271410555121833109602304"); + list.add("002212023100312244910555136322564960256"); + list.add("002212023100312281410555137184035483648"); + list.add("002212023100314025710555161018088538112"); + list.add("002212023100314140310555163814611378176"); + list.add("002212023100314284510555167514443214848"); + list.add("002212023100315000910555175414894649344"); + list.add("002212023100315133510555178794163892224"); + list.add("002212023100316114210555193421865070592"); + list.add("002212023100319414510555246283611942912"); + list.add("002212023100321005110555266189170683904"); + list.add("002212023100321394210555275963558621184"); + list.add("002212023100322025210555281795593003008"); + list.add("002212023100400064810555312983585796096"); + list.add("002212023100401181710555330971294453760"); + list.add("002212023100407402610555427142159794176"); + list.add("002212023100408275210555439082005299200"); + list.add("002212023100410225210555468023636946944"); + list.add("002212023100410272210555469155549216768"); + list.add("002212023100411324310555485600300060672"); + list.add("002212023100411450810555488725242183680"); + list.add("002212023100411503810555490107234455552"); + list.add("002212023100411583910555492124862803968"); + list.add("002212023100413132310555510935854870528"); + list.add("002212023100413371910555516956532269056"); + list.add("002212023100414113810555525593474244608"); + list.add("002212023100414191810555527522302504960"); + list.add("002212023100414271410555529518577008640"); + list.add("002212023100415043710555538928129531904"); + list.add("002212023100416415110555563396157382656"); + list.add("002212023100421470510555640209074237440"); + list.add("002212023100500102410555676277345595392"); + list.add("002212023100502413410555714320954023936"); + list.add("002212023100507172310555783731974459392"); + list.add("002212023100507233110555785273959993344"); + list.add("002212023100508585610555809285826105344"); + list.add("002212023100509045810555810804613218304"); + list.add("002212023100510252810555831063714422784"); + list.add("002212023100511263110555846425917255680"); + list.add("002212023100511461010555851372294778880"); + list.add("002212023100512271210555861697110978560"); + list.add("002212023100513051310555871266696249344"); + list.add("002212023100513505710555882774896316416"); + list.add("002212023100515045610555901394448117760"); + list.add("002212023100515174510555904617470078976"); + list.add("002212023100516145810555919017068122112"); + list.add("002212023100521500510556003351552774144"); + list.add("002212023100522285510556013128086421504"); + list.add("002212023100603053110556082733899427840"); + list.add("002212023100606294710556134142301134848"); + list.add("002212023100606565010556140946636091392"); + list.add("002212023100607244910556147990866927616"); + list.add("002212023100607334410556150232133386240"); + list.add("002212023100607414410556152247411011584"); + list.add("002212023100609410810556182293342531584"); + list.add("002212023100610011710556187364188991488"); + list.add("002212023100610152410556190916679299072"); + list.add("002212023100610363310556196242185957376"); + list.add("002212023100611024310556202824542429184"); + list.add("002212023100612541810556230905774989312"); + list.add("002212023100613131510556235674634342400"); + list.add("002212023100613223410556238020255592448"); + list.add("002212023100613445310556243636195905536"); + list.add("002212023100613561110556246481046298624"); + list.add("002212023100614050910556248738888675328"); + list.add("002212023100614133810556250873098919936"); + list.add("002212023100614422410556258111712878592"); + list.add("002212023100614431710556258333159309312"); + list.add("002212023100614435310556258483804565504"); + list.add("002212023100615014710556262990450094080"); + list.add("002212023100615394310556272534428233728"); + list.add("002212023100618011810556308165051527168"); + list.add("002212023100618592310556322784176758784"); + list.add("002212023100619414110556333427736358912"); + list.add("002212023100621162110556357250079969280"); + list.add("002212023100622043610556369392561782784"); + list.add("002212023100622454910556379768362627072"); + list.add("002212023100623032910556384213802147840"); + list.add("002212023100702315810556436677884633088"); + list.add("002212023100707190610556508937532477440"); + list.add("002212023100707234310556510101162328064"); + list.add("002212023100707511010556517009443217408"); + list.add("002212023100707511410556517024173109248"); + list.add("002212023100708212810556524633510555648"); + list.add("002212023100708423810556529961220354048"); + list.add("002212023100708473510556531204773900288"); + list.add("002212023100709020810556534870068912128"); + list.add("002212023100709304010556542048988803072"); + list.add("002212023100709511910556547244318253056"); + list.add("002212023100710020810556549969540542464"); + list.add("002212023100711584010556579294286688256"); + list.add("002212023100712493610556592113761595392"); + list.add("002212023100713172910556599127932661760"); + list.add("002212023100714005810556610072638881792"); + list.add("002212023100714223510556615512809369600"); + list.add("002212023100714592910556624796217249792"); + list.add("002212023100715025510556625662892294144"); + list.add("002212023100715055810556626431786094592"); + list.add("002212023100717114310556658074668240896"); + list.add("002212023100717531210556668516368338944"); + list.add("002212023100719162410556689455261409280"); + list.add("002212023100719540210556698926137692160"); + list.add("002212023100720091110556702738533822464"); + list.add("002212023100721013510556715922879369216"); + list.add("002212023100721014810556715979837980672"); + list.add("002212023100721115210556718510663454720"); + list.add("002212023100722143010556734275304402944"); + list.add("002212023100722213410556736051984986112"); + list.add("002212023100723035810556746721452867584"); + list.add("002212023100807015410556866999419645952"); + list.add("002212023100807234510556872497895043072"); + list.add("002212023100807512110556879444170166272"); + list.add("002212023100808181710556886220690141184"); + list.add("002212023100808272610556888521639165952"); + list.add("002212023100809290710556904047041753088"); + list.add("002212023100810171410556916153746378752"); + list.add("002212023100810283710556919021745954816"); + list.add("002212023100810481510556923960696500224"); + list.add("002212023100810530110556925159673421824"); + list.add("002212023100811442010556938076316233728"); + list.add("002212023100815004510556987504294309888"); + list.add("002212023100815090910556989618071015424"); + list.add("002212023100815242810556993471794851840"); + list.add("002212023100815294910556994821861617664"); + list.add("002212023100816185810557007190293995520"); + list.add("002212023100816392410557012330555879424"); + list.add("002212023100818141010557036179628457984"); + list.add("002212023100819080510557049748596678656"); + list.add("002212023100820011910557063146809245696"); + list.add("002212023100820242510557068957237751808"); + list.add("002212023100820433010557073761221132288"); + list.add("002212023100821512910557090870043291648"); + list.add("002212023100822240810557099086184087552"); + list.add("002212023100822411610557103398356520960"); + list.add("002212023100823063110557109753609699328"); + list.add("002212023100823464010557119858014924800"); + list.add("002212023100900400010557133279128113152"); + list.add("002212023100902294210557160883032600576"); + list.add("002212023100906174110557218259050414080"); + list.add("002212023100907234610557234888949575680"); + list.add("002212023100907294910557236411607920640"); + list.add("002212023100907413010557239353054306304"); + list.add("002212023100907470610557240759343755264"); + list.add("002212023100907524110557242165033955328"); + list.add("002212023100909013610557259509219192832"); + list.add("002212023100909094810557261574950854656"); + list.add("002212023100909100110557261627310583808"); + list.add("002212023100909110310557261887160672256"); + list.add("002212023100909154610557263073355476992"); + list.add("002212023100909285710557266392776699904"); + list.add("002212023100909331810557267488979021824"); + list.add("002212023100909552910557273070582267904"); + list.add("002212023100909594210557274131223011328"); + list.add("002212023100910060110557275722574942208"); + list.add("002212023100910064310557275898203308032"); + list.add("002212023100910344110557282933733011456"); + list.add("002212023100912123410557307566759305216"); + list.add("002212023100912193810557309346283442176"); + list.add("002212023100913482710557331697982726144"); + list.add("002212023100914434710557345623151161344"); + list.add("002212023100914533610557348093587992576"); + list.add("002212023100915055910557351209687572480"); + list.add("002212023100915284710557356946625400832"); + list.add("002212023100915364510557358952813158400"); + list.add("002212023100916325210557373074114703360"); + list.add("002212023100917523410557393130409406464"); + list.add("002212023100918285310557402273010933760"); + list.add("002212023100919154710557414072782082048"); + list.add("002212023100919545910557423937407160320"); + list.add("002212023100920020910557425741310455808"); + list.add("002212023100921192910557445202939379712"); + list.add("002212023100921202410557445433249939456"); + list.add("002212023100922072710557457276347527168"); + list.add("002212023100922111710557458238888181760"); + list.add("002212023100922130410557458688708096000"); + list.add("002212023100922251710557461762963652608"); + list.add("002212023100922304110557463124235681792"); + list.add("002212023100923094310557472945180946432"); + list.add("002212023100923152910557474396784197632"); + list.add("002212023101000405810557495907044995072"); + list.add("002212023101007214710557596779379408896"); + list.add("002212023101007324610557599540030185472"); + list.add("002212023101007355210557600323601670144"); + list.add("002212023101007442710557602482909966336"); + list.add("002212023101007494610557603821493891072"); + list.add("002212023101008222610557612040438263808"); + list.add("002212023101008384910557616164273762304"); + list.add("002212023101009354010557630472419012608"); + list.add("002212023101009445110557632780575289344"); + list.add("002212023101009455010557633028519337984"); + list.add("002212023101010124710557639812957958144"); + list.add("002212023101011441010557662808692482048"); + list.add("002212023101012255410557673312441253888"); + list.add("002212023101014012210557697338405019648"); + list.add("002212023101014231410557702840899256320"); + list.add("002212023101014434510557708004188180480"); + list.add("002212023101014592610557711950663340032"); + list.add("002212023101015072610557713961571241984"); + list.add("002212023101015174610557716563017814016"); + list.add("002212023101015370510557721424212209664"); + list.add("002212023101015594210557727116101140480"); + list.add("002212023101017102710557744919403282432"); + list.add("002212023101017212410557747675419029504"); + list.add("002212023101018585010557772196326846464"); + list.add("002212023101019111110557775303102345216"); + list.add("002212023101019475310557784541315457024"); + list.add("002212023101020123310557790747075256320"); + list.add("002212023101020384010557797320134701056"); + list.add("002212023101022003510557817935361191936"); + list.add("002212023101022080310557819813024157696"); + list.add("002212023101022133710557821215444037632"); + list.add("002212023101023560410557846995625947136"); + list.add("002212023101101130510557866378146295808"); + list.add("002212023101102124910557881412095045632"); + list.add("002212023101106544010557952341302841344"); + list.add("002212023101107275210557960695855144960"); + list.add("002212023101107452110557965097176870912"); + list.add("002212023101107535910557967271101710336"); + list.add("002212023101108283610557975980680327168"); + list.add("002212023101109212910557989288584069120"); + list.add("002212023101109280510557990949724614656"); + list.add("002212023101109531910557997299519188992"); + list.add("002212023101110061910558000573374787584"); + list.add("002212023101112055010558030649673101312"); + list.add("002212023101113180410558048825928237056"); + list.add("002212023101115375810558084035978145792"); + list.add("002212023101117124310558107878682267648"); + list.add("002212023101118524810558133065436196864"); + list.add("002212023101119284010558142091864780800"); + list.add("002212023101120234610558155956378849280"); + list.add("002212023101120472510558161910043754496"); + list.add("002212023101121115910558168091469987840"); + list.add("002212023101121280510558172145780994048"); + list.add("002212023101122032710558181044038905856"); + list.add("002212023101201450210558236809382285312"); + list.add("002212023101202235510558246592974139392"); + list.add("002212023101207191110558320900570001408"); + list.add("002212023101207374510558325571521314816"); + list.add("002212023101207380110558325638045081600"); + list.add("002212023101208024610558331866341433344"); + list.add("002212023101208211510558336520634466304"); + list.add("002212023101208230110558336965549973504"); + list.add("002212023101208283810558338378551767040"); + list.add("002212023101208580710558345796579848192"); + list.add("002212023101209511010558359145179983872"); + list.add("002212023101210351310558370232935563264"); + list.add("002212023101212443510558402788823638016"); + list.add("002212023101213550410558420527308820480"); + list.add("002212023101214090510558424055184338944"); + list.add("002212023101214293510558429214214713344"); + list.add("002212023101215005210558437083879825408"); + list.add("002212023101215410010558447186704293888"); + list.add("002212023101215593610558451865234698240"); + list.add("002212023101216191210558456800093401088"); + list.add("002212023101216431810558462861942042624"); + list.add("002212023101217023010558467697205669888"); + list.add("002212023101219460610558508866352144384"); + list.add("002212023101220022510558512971547328512"); + list.add("002212023101222005310558542786576084992"); + list.add("002212023101222050210558543832145952768"); + list.add("002212023101222205910558547845078675456"); + list.add("002212023101222225510558548329344274432"); + list.add("002212023101222403910558552794795073536"); + list.add("002212023101300005410558572990538874880"); + list.add("002212023101300040710558573800429166592"); + list.add("002212023101302112410558605832912728064"); + list.add("002212023101305530110558661602905153536"); + list.add("002212023101307070610558680246924791808"); + list.add("002212023101307290610558685784246026240"); + list.add("002212023101307293110558685885580423168"); + list.add("002212023101308133510558696977996439552"); + list.add("002212023101308253610558699999928958976"); + list.add("002212023101308584410558708341362294784"); + list.add("002212023101309122610558711787202752512"); + list.add("002212023101309455710558720221489844224"); + list.add("002212023101309582810558723373890981888"); + list.add("002212023101310401210558733876179415040"); + list.add("002212023101311424110558749597826244608"); + list.add("002212023101311493910558751351483113472"); + list.add("002212023101313295810558776597268320256"); + list.add("002212023101313421510558779690179059712"); + list.add("002212023101314375510558793699975987200"); + list.add("002212023101314501410558796799641866240"); + list.add("002212023101314562610558798359197626368"); + list.add("002212023101314582110558798838911107072"); + list.add("002212023101315274210558806227678363648"); + list.add("002212023101316135510558817855323860992"); + list.add("002212023101316454110558825853674545152"); + list.add("002212023101316502310558827034939748352"); + list.add("002212023101316571510558828762986168320"); + list.add("002212023101318274710558851547779284992"); + list.add("002212023101319444210558870904236630016"); + list.add("002212023101321575310558904417748627456"); + list.add("002212023101322004910558905158424965120"); + list.add("002212023101322021410558905514520047616"); + list.add("002212023101322510210558917795908636672"); + list.add("002212023101400081010558937205461991424"); + list.add("002212023101406472310559037671006449664"); + list.add("002212023101407514810559053883977871360"); + list.add("002212023101408475910559068023591792640"); + list.add("002212023101409292210559078436108222464"); + list.add("002212023101410295010559093653992873984"); + list.add("002212023101410471810559098050040934400"); + list.add("002212023101411044910559102458531397632"); + list.add("002212023101413245010559137694886227968"); + list.add("002212023101414064010559148220539449344"); + list.add("002212023101414353010559155476559814656"); + list.add("002212023101415050310559162913126346752"); + list.add("002212023101415082910559163778754838528"); + list.add("002212023101415171010559165963182272512"); + list.add("002212023101415194810559166627890245632"); + list.add("002212023101416042610559177857893842944"); + list.add("002212023101416101710559179332660133888"); + list.add("002212023101416223310559182418113708032"); + list.add("002212023101422025510559268073290952704"); + list.add("002212023101501332410559321043722301440"); + list.add("002212023101507263010559409904888762368"); + list.add("002212023101508455910559429905554587648"); + list.add("002212023101509221910559439050121506816"); + list.add("002212023101510345910559457336200712192"); + list.add("002212023101510372610559457953854992384"); + list.add("002212023101510553810559462534670876672"); + list.add("002212023101511075910559465641425948672"); + list.add("002212023101511125910559466901245255680"); + list.add("002212023101511244310559469854681186304"); + list.add("002212023101511572110559478065956745216"); + list.add("002212023101512433210559489686543958016"); + list.add("002212023101513072610559495702812028928"); + list.add("002212023101513425610559504634994720768"); + list.add("002212023101513545410559507648564682752"); + list.add("002212023101514002510559509037378428928"); + list.add("002212023101514082810559511062512304128"); + list.add("002212023101514375410559518471427903488"); + list.add("002212023101514570510559523296643215360"); + list.add("002212023101515024310559524715833294848"); + list.add("002212023101515063910559525704733024256"); + list.add("002212023101516270410559545940826132480"); + list.add("002212023101516495710559551702819586048"); + list.add("002212023101518305510559577111393722368"); + list.add("002212023101520374210559609018122985472"); + list.add("002212023101521011310559614933620936704"); + list.add("002212023101522032410559630584582238208"); + list.add("002212023101522065710559631475024687104"); + list.add("002212023101522093010559632118667264000"); + list.add("002212023101522151210559633552913432576"); + list.add("002212023101522170810559634037727653888"); + list.add("002212023101523210410559650127225470976"); + list.add("002212023101523382010559654473535242240"); + list.add("002212023101600131910559663278126514176"); + list.add("002212023101607273710559772574975176704"); + list.add("002212023101607363910559774846411321344"); + list.add("002212023101608001110559780768293064704"); + list.add("002212023101608042010559781815128780800"); + list.add("002212023101608281010559787809402761216"); + list.add("002212023101609075510559797815472926720"); + list.add("002212023101610225210559816677176995840"); + list.add("002212023101611014410559826459422281728"); + list.add("002212023101611020810559826556693995520"); + list.add("002212023101611395710559836075838652416"); + list.add("002212023101612565710559855450498760704"); + list.add("002212023101613294910559863725399465984"); + list.add("002212023101614291710559878688805191680"); + list.add("002212023101614510210559884163017814016"); + list.add("002212023101614563010559885538294472704"); + list.add("002212023101615005710559886657310609408"); + list.add("002212023101616351610559910395804569600"); + list.add("002212023101616522710559914719818801152"); + list.add("002212023101619104310559949514701803520"); + list.add("002212023101619304910559954573474377728"); + list.add("002212023101620312710559969829996900352"); + list.add("002212023101621174310559981472844513280"); + list.add("002212023101622164310559996321684762624"); + list.add("002212023101622433510560003083846529024"); + list.add("002212023101623210610560012523772407808"); + list.add("002212023101623402510560017387184984064"); + list.add("002212023101700533710560035808125104128"); + list.add("002212023101704554010560096722228576256"); + list.add("002212023101706030110560113671499264000"); + list.add("002212023101706580910560127546330714112"); + list.add("002212023101706592010560127843438784512"); + list.add("002212023101707155810560132029059346432"); + list.add("002212023101707454110560139505616715776"); + list.add("002212023101708200010560148144207151104"); + list.add("002212023101708435010560154143072399360"); + list.add("002212023101708590610560157981903425536"); + list.add("002212023101709111710560161048356700160"); + list.add("002212023101709392310560168120162369536"); + list.add("002212023101709422610560168888626798592"); + list.add("002212023101710332010560181699358654464"); + list.add("002212023101710332710560181728426962944"); + list.add("002212023101710414010560183795251912704"); + list.add("002212023101711081710560190493111611392"); + list.add("002212023101711082510560190526624198656"); + list.add("002212023101711261510560195013180375040"); + list.add("002212023101712103910560206188810809344"); + list.add("002212023101713102010560221209581244416"); + list.add("002212023101714323210560241895737577472"); + list.add("002212023101714554810560247748835893248"); + list.add("002212023101715082310560250917543968768"); + list.add("002212023101715164810560253036537491456"); + list.add("002212023101716121110560266970699374592"); + list.add("002212023101716261410560270510304247808"); + list.add("002212023101717115910560282019780616192"); + list.add("002212023101718555210560308166554284032"); + list.add("002212023101719451810560320604888625152"); + list.add("002212023101720211510560329650837905408"); + list.add("002212023101720272310560331194609905664"); + list.add("002212023101721400610560349493740077056"); + list.add("002212023101722125610560357757208739840"); + list.add("002212023101722130610560357801784430592"); + list.add("002212023101723181310560374186879926272"); + list.add("002212023101807031410560491213440114688"); + list.add("002212023101807274910560497398536163328"); + list.add("002212023101807295610560497932327636992"); + list.add("002212023101807352910560499326544752640"); + list.add("002212023101807374010560499879664902144"); + list.add("002212023101807492410560502830339190784"); + list.add("002212023101808150910560509311297232896"); + list.add("002212023101809025510560521330205818880"); + list.add("002212023101809121310560523673531273216"); + list.add("002212023101809485310560532900228284416"); + list.add("002212023101810022110560536287317819392"); + list.add("002212023101810030310560536464997212160"); + list.add("002212023101810290010560542995788587008"); + list.add("002212023101811182010560555410536534016"); + list.add("002212023101811224110560556503829544960"); + list.add("002212023101812512010560578813678235648"); + list.add("002212023101813314010560588964899045376"); + list.add("002212023101814040210560597109922250752"); + list.add("002212023101814062810560597724354523136"); + list.add("002212023101815032010560612034158485504"); + list.add("002212023101815165310560615442514972672"); + list.add("002212023101816242010560632420002414592"); + list.add("002212023101816290710560633621435039744"); + list.add("002212023101818414910560667015464308736"); + list.add("002212023101819005810560671837223604224"); + list.add("002212023101820125110560689927070945280"); + list.add("002212023101821335010560710306222551040"); + list.add("002212023101822095810560719397825536000"); + list.add("002212023101822385810560726696392048640"); + list.add("002212023101823343210560740679581118464"); + list.add("002212023101907275010560859789577105408"); + list.add("002212023101907372910560862220786249728"); + list.add("002212023101908025210560868608896114688"); + list.add("002212023101908041610560868958636191744"); + list.add("002212023101908554010560881893844705280"); + list.add("002212023101908570410560882246480527360"); + list.add("002212023101909514610560896014107525120"); + list.add("002212023101910012310560898434316849152"); + list.add("002212023101910384010560907815761481728"); + list.add("002212023101911242010560919309900496896"); + list.add("002212023101912170310560932576500043776"); + list.add("002212023101912204110560933487834132480"); + list.add("002212023101913050010560944641706012672"); + list.add("002212023101913452110560954795558420480"); + list.add("002212023101913531510560956784408997888"); + list.add("002212023101913550710560957253541609472"); + list.add("002212023101913572010560957812163211264"); + list.add("002212023101914025910560959232493056000"); + list.add("002212023101915024810560974285687861248"); + list.add("002212023101915123210560976734880514048"); + list.add("002212023101916155310560992677346140160"); + list.add("002212023101919054110561035410409959424"); + list.add("002212023101919091310561036298298855424"); + list.add("002212023101919361110561043086554611712"); + list.add("002212023101920222510561054721701031936"); + list.add("002212023101920315010561057090509979648"); + list.add("002212023101921254510561070659773665280"); + list.add("002212023101922095610561081778466721792"); + list.add("002212023101922124310561082477980160000"); + list.add("002212023101922460610561090878941933568"); + list.add("002212023102007062710561216797480300544"); + list.add("002212023102007235810561221206213885952"); + list.add("002212023102007244110561221387949170688"); + list.add("002212023102007293810561222631013224448"); + list.add("002212023102007353710561224138101596160"); + list.add("002212023102007370110561224491669393408"); + list.add("002212023102007374310561224664798121984"); + list.add("002212023102007525110561228476780339200"); + list.add("002212023102009175610561249887937286144"); + list.add("002212023102010041610561261544986857472"); + list.add("002212023102010072210561262326583078912"); + list.add("002212023102011071510561277398507245568"); + list.add("002212023102013062410561307383717347328"); + list.add("002212023102013071010561307575900356608"); + list.add("002212023102013230310561311571440807936"); + list.add("002212023102013254110561312235487211520"); + list.add("002212023102013482910561317973085634560"); + list.add("002212023102013531310561319163176079360"); + list.add("002212023102013570910561320154881421312"); + list.add("002212023102014080910561322921641373696"); + list.add("002212023102015135710561339479696789504"); + list.add("002212023102015453810561347452663226368"); + list.add("002212023102018172310561385643372150784"); + list.add("002212023102019475410561408425041289216"); + list.add("002212023102020355510561420505043398656"); + list.add("002212023102021345410561435349513490432"); + list.add("002212023102021401210561436682581221376"); + list.add("002212023102022182110561446284984655872"); + list.add("002212023102022423010561452364418838528"); + list.add("002212023102100030210561472627551526912"); + list.add("002212023102102295510561509595326930944"); + list.add("002212023102107050710561578849844895744"); + list.add("002212023102107234210561583524817100800"); + list.add("002212023102107241110561583650262507520"); + list.add("002212023102107291210561584910515269632"); + list.add("002212023102107320410561585630591623168"); + list.add("002212023102107360010561586622521110528"); + list.add("002212023102107382110561587213663494144"); + list.add("002212023102107423410561588275666001920"); + list.add("002212023102108000910561592700804046848"); + list.add("002212023102108562210561606847455256576"); + list.add("002212023102109245810561614043043815424"); + list.add("002212023102109245810561614045402669056"); + list.add("002212023102109271610561614621853163520"); + list.add("002212023102109570910561622142813249536"); + list.add("002212023102110105210561625597147410432"); + list.add("002212023102110420010561633430765105152"); + list.add("002212023102112131110561656378737778688"); + list.add("002212023102113393110561678102698090496"); + list.add("002212023102113503310561680880185724928"); + list.add("002212023102113542410561681849160265728"); + list.add("002212023102113584510561682942536998912"); + list.add("002212023102114402710561693437610127360"); + list.add("002212023102115155210561702352775774208"); + list.add("002212023102115500110561710946982543360"); + list.add("002212023102116291310561720810841796608"); + list.add("002212023102116500510561726063784980480"); + list.add("002212023102117290610561735881465569280"); + list.add("002212023102117540010561742145377517568"); + list.add("002212023102119520110561771844847501312"); + list.add("002212023102119550710561772625143754752"); + list.add("002212023102119582410561773454204321792"); + list.add("002212023102120523010561787066135572480"); + list.add("002212023102121071210561790766073028608"); + list.add("002212023102121084310561791148314390528"); + list.add("002212023102121445810561800272135364608"); + list.add("002212023102122460810561815665595408384"); + list.add("002212023102122495610561816622372708352"); + list.add("002212023102122590510561818924035047424"); + list.add("002212023102201253010561855770324598784"); + list.add("002212023102207262410561946592113545216"); + list.add("002212023102207341710561948577546330112"); + list.add("002212023102207524810561953236422578176"); + list.add("002212023102208255110561961554189971456"); + list.add("002212023102209364210561979384399880192"); + list.add("002212023102210093610561987662781411328"); + list.add("002212023102210421910561995899764166656"); + list.add("002212023102212084710562017658538250240"); + list.add("002212023102212195610562020463698309120"); + list.add("002212023102212252210562021831378817024"); + list.add("002212023102213560010562044640518008832"); + list.add("002212023102214013410562046041867911169"); + list.add("002212023102214225010562051392359931904"); + list.add("002212023102214330610562053975193219072"); + list.add("002212023102215022810562061368840388608"); + list.add("002212023102215073310562062647102562304"); + list.add("002212023102215105810562063505804185600"); + list.add("002212023102215250610562067062079049728"); + list.add("002212023102215274810562067744074194944"); + list.add("002212023102215565910562075085939105792"); + list.add("002212023102216044410562077035068608512"); + list.add("002212023102216115810562078856508043264"); + list.add("002212023102216403610562086064860766208"); + list.add("002212023102218572110562120477074321408"); + list.add("002212023102219274910562128143182942208"); + list.add("002212023102221413910562161824497889280"); + list.add("002212023102222150010562170217891069952"); + list.add("002212023102222231510562172293998428160"); + list.add("002212023102223094310562183986872279040"); + list.add("002212023102306431210562298111445782528"); + list.add("002212023102307313010562310265483526144"); + list.add("002212023102307423210562313043459145728"); + list.add("002212023102307451810562313738174668800"); + list.add("002212023102307480210562314427880927232"); + list.add("002212023102307532610562315783898222592"); + list.add("002212023102308080510562319473704394752"); + list.add("002212023102308150910562321251479670784"); + list.add("002212023102308182810562322083316191232"); + list.add("002212023102309293810562339994684841984"); + list.add("002212023102310270110562354435757133824"); + list.add("002212023102311082510562364852391964672"); + list.add("002212023102311120710562365787007569920"); + list.add("002212023102311350710562371574348890112"); + list.add("002212023102312003210562377971757203456"); + list.add("002212023102313244510562399165518143488"); + list.add("002212023102313410710562403280839995392"); + list.add("002212023102313572210562407373102628864"); + list.add("002212023102314072810562409915573563392"); + list.add("002212023102315095310562425621565628416"); + list.add("002212023102315235510562429153081356288"); + list.add("002212023102315292410562430531006439424"); + list.add("002212023102315384210562432874118144000"); + list.add("002212023102315424410562433889337430016"); + list.add("002212023102317310410562461152148152320"); + list.add("002212023102317351910562462222572122112"); + list.add("002212023102317385310562463118377132032"); + list.add("002212023102318501210562481067462553600"); + list.add("002212023102319110610562486326812696576"); + list.add("002212023102320105910562501393913520128"); + list.add("002212023102320173510562503056056410112"); + list.add("002212023102320595810562513722158899200"); + list.add("002212023102322004010562528998402334720"); + list.add("002212023102322020510562529356308094976"); + list.add("002212023102322142110562532443618078720"); + list.add("002212023102322204410562534050054561792"); + list.add("002212023102322222010562534451989245952"); + list.add("002212023102407225710562670502224293888"); + list.add("002212023102407244710562670962511400960"); + list.add("002212023102407330110562673035276537856"); + list.add("002212023102407430910562675586775932928"); + list.add("002212023102407561410562678876442165248"); + list.add("002212023102407573310562679210903826432"); + list.add("002212023102409563810562709176907419648"); + list.add("002212023102410291410562717379770675200"); + list.add("002212023102411023110562725758919331840"); + list.add("002212023102411405210562735409707130880"); + list.add("002212023102413074110562757258049994752"); + list.add("002212023102413093310562757728125018112"); + list.add("002212023102414110610562773215483326464"); + list.add("002212023102414335410562778953519550464"); + list.add("002212023102414401910562780570440474624"); + list.add("002212023102415023110562786153690525696"); + list.add("002212023102415113610562788441053421568"); + list.add("002212023102415244710562791760491167744"); + list.add("002212023102415251310562791867792289792"); + list.add("002212023102417033310562816615190085632"); + list.add("002212023102418071810562832656911532032"); + list.add("002212023102418141110562834387823579136"); + list.add("002212023102420054110562862451354980352"); + list.add("002212023102420395110562871048391434240"); + list.add("002212023102421580810562890748767281152"); + list.add("002212023102421595410562891191494860800"); + list.add("002212023102423273610562913262658211840"); + list.add("002212023102504055510562983304637935616"); + list.add("002212023102507150510563030909280804864"); + list.add("002212023102507295210563034631262216192"); + list.add("002212023102507351010563035962611408896"); + list.add("002212023102507582510563041815565139968"); + list.add("002212023102507585210563041926676815872"); + list.add("002212023102508034810563043168837132288"); + list.add("002212023102509275710563064348165038080"); + list.add("002212023102509412010563067714578108416"); + list.add("002212023102509590410563072177855590400"); + list.add("002212023102514111510563135640478720000"); + list.add("002212023102514450710563144163293097984"); + list.add("002212023102515212610563153305503047680"); + list.add("002212023102515251310563154254989139968"); + list.add("002212023102515425010563158688032444416"); + list.add("002212023102516051210563164317499744256"); + list.add("002212023102516323510563171208482824192"); + list.add("002212023102516493910563175505742491648"); + list.add("002212023102518475510563205267774853120"); + list.add("002212023102520090910563225712047120384"); + list.add("002212023102521070710563240299874971648"); + list.add("002212023102521502710563251203298512896"); + list.add("002212023102522414010563264092616302592"); + list.add("002212023102601572310563313347911184384"); + list.add("002212023102604274710563351194297212928"); + list.add("002212023102607380310563399078340157440"); + list.add("002212023102607502510563402189752061952"); + list.add("002212023102607565410563403820092055552"); + list.add("002212023102608354010563413575395688448"); + list.add("002212023102608405410563414892673572864"); + list.add("002212023102608514610563417629771755520"); + list.add("002212023102610281510563441908059807744"); + list.add("002212023102610313410563442745974218752"); + list.add("002212023102610482810563446996932714496"); + list.add("002212023102610554510563448829284274176"); + list.add("002212023102611311310563457755383357440"); + list.add("002212023102612521910563478166923595776"); + list.add("002212023102613580710563494724795330560"); + list.add("002212023102614162410563499325604798464"); + list.add("002212023102614192510563500082946596864"); + list.add("002212023102614290210563502505159802880"); + list.add("002212023102614580810563509828230619136"); + list.add("002212023102615035210563511271240982528"); + list.add("002212023102615301510563517909685063680"); + list.add("002212023102615452110563521711569879040"); + list.add("002212023102615554210563524316408881152"); + list.add("002212023102617180510563545047308394496"); + list.add("002212023102618490410563567946080944128"); + list.add("002212023102618553810563569594873901056"); + list.add("002212023102619504010563583445461065728"); + list.add("002212023102620282410563592943384436736"); + list.add("002212023102621023710563601554055667712"); + list.add("002212023102622022010563616581711253504"); + list.add("002212023102622041310563617056596975616"); + list.add("002212023102622073010563617881920327680"); + list.add("002212023102622145110563619733427494912"); + list.add("002212023102622444210563627242880061440"); + list.add("002212023102700032610563647055686311936"); + list.add("002212023102703151410563695323942965248"); + list.add("002212023102703345510563700277920210944"); + list.add("002212023102707302710563759552475979776"); + list.add("002212023102707381610563761521296633856"); + list.add("002212023102707524310563765155498369024"); + list.add("002212023102708322010563775125000331264"); + list.add("002212023102709153610563786014707642368"); + list.add("002212023102710031110563797987445010432"); + list.add("002212023102710191710563802039524532224"); + list.add("002212023102710464410563808949781282816"); + list.add("002212023102711023210563812925727637504"); + list.add("002212023102712080110563829406240751616"); + list.add("002212023102712253310563833817311105024"); + list.add("002212023102713151010563846304894435328"); + list.add("002212023102714373910563867060178624512"); + list.add("002212023102714592810563872550145060864"); + list.add("002212023102715241910563878804339539968"); + list.add("002212023102715551910563886605535846400"); + list.add("002212023102716175310563892286090223616"); + list.add("002212023102717582410563917580340862976"); + list.add("002212023102718333810563926449023623168"); + list.add("002212023102719282310563940224997007360"); + list.add("002212023102721174010563967728621023232"); + list.add("002212023102721423810563974013104943104"); + list.add("002212023102721514610563976310997233665"); + list.add("002212023102722104510563981087487406080"); + list.add("002212023102722475510563990442441687040"); + list.add("002212023102723102010563996082682970112"); + list.add("002212023102800194010564013530344570880"); + list.add("002212023102806331510564107545946865664"); + list.add("002212023102807511010564127153024397312"); + list.add("002212023102808024910564130086438408192"); + list.add("002212023102808313310564137317358104576"); + list.add("002212023102808411910564139773237985280"); + list.add("002212023102808543510564143111744266240"); + list.add("002212023102808544510564143156517650432"); + list.add("002212023102809174410564148940068089856"); + list.add("002212023102809261410564151077603749888"); + list.add("002212023102810170210564163863774642176"); + list.add("002212023102812571410564204176212381696"); + list.add("002212023102813030010564205627969892352"); + list.add("002212023102813103110564207519220994048"); + list.add("002212023102815031010564235868787699712"); + list.add("002212023102815285310564242341997903872"); + list.add("002212023102815445610564246380531826688"); + list.add("002212023102815521310564248216025952256"); + list.add("002212023102816010310564250437107994624"); + list.add("002212023102816285810564257463640408064"); + list.add("002212023102817360710564274361112993792"); + list.add("002212023102818592110564295307849932800"); + list.add("002212023102820134710564314039668424704"); + list.add("002212023102820394010564320554977325056"); + list.add("002212023102821082610564327792259211264"); + list.add("002212023102822003610564340922041864192"); + list.add("002212023102822115410564343766421172224"); + list.add("002212023102822545610564354596226199552"); + list.add("002212023102822565710564355099934392320"); + list.add("002212023102900093510564373380199882752"); + list.add("002212023102902132510564404544251895808"); + list.add("002212023102906524210564474828074356736"); + list.add("002212023102907384610564486422578372608"); + list.add("002212023102908501510564504409196003328"); + list.add("002212023102909423710564517589366075392"); + list.add("002212023102911251610564543422442614784"); + list.add("002212023102911505710564549884874477568"); + list.add("002212023102911523310564550289633202176"); + list.add("002212023102913350110564576075707686912"); + list.add("002212023102914230210564588156792668160"); + list.add("002212023102914570210564596715571474432"); + list.add("002212023102915032610564598325018689536"); + list.add("002212023102915365410564606746777985024"); + list.add("002212023102915524510564610734493790208"); + list.add("002212023102915571310564611861224865792"); + list.add("002212023102916254710564619047426072576"); + list.add("002212023102916284510564619797265641472"); + list.add("002212023102917471610564639556493529088"); + list.add("002212023102917501910564640322039062528"); + list.add("002212023102917542910564641371068547072"); + list.add("002212023102919100410564660393352871936"); + list.add("002212023102920435410564684007219810304"); + list.add("002212023102922003510564703303620345856"); + list.add("002212023102922245210564709415323058176"); + list.add("002212023102922542110564716836304711680"); + list.add("002212023102923210610564723566057877504"); + list.add("002212023102923465310564730055337852928"); + list.add("002212023103007053010564840437639028736"); + list.add("002212023103007340210564847616452870144"); + list.add("002212023103007410210564849378911993856"); + list.add("002212023103007440610564850151885991936"); + list.add("002212023103007525310564852361725366272"); + list.add("002212023103007553810564853053324152832"); + list.add("002212023103008283410564861340632846336"); + list.add("002212023103008472310564866077545209856"); + list.add("002212023103008564410564868430516023296"); + list.add("002212023103009315610564877288173715456"); + list.add("002212023103009442610564880433640992768"); + list.add("002212023103010235810564890384984424448"); + list.add("002212023103010540510564897961741275136"); + list.add("002212023103011473510564911426045984768"); + list.add("002212023103012103110564917195603427328"); + list.add("002212023103012404210564924793643331584"); + list.add("002212023103012481410564926688424869888"); + list.add("002212023103013542810564943358564872192"); + list.add("002212023103014002110564944839363899392"); + list.add("002212023103014083310564946899451092992"); + list.add("002212023103014273710564951701194911744"); + list.add("002212023103014414510564955255362547712"); + list.add("002212023103015101010564962407105961984"); + list.add("002212023103015565610564974178112786432"); + list.add("002212023103016290610564982273699311616"); + list.add("002212023103018361610565014273871310848"); + list.add("002212023103018402210565015305290842112"); + list.add("002212023103018533010565018609857171456"); + list.add("002212023103020275010565042351033434112"); + list.add("002212023103021133310565053855503810560"); + list.add("002212023103021162910565054592679669760"); + list.add("002212023103021215610565055964112220160"); + list.add("002212023103022044710565066750264078336"); + list.add("002212023103022055110565067015838015488"); + list.add("002212023103022344710565074299883200512"); + list.add("002212023103023120710565083693098475520"); + list.add("002212023103100524510565109021539672064"); + list.add("002212023103107262710565208097214164992"); + list.add("002212023103107283910565208649081823232"); + list.add("002212023103107324810565209693765509120"); + list.add("002212023103107350310565210261170790400"); + list.add("002212023103107542210565215123502108672"); + list.add("002212023103108214710565222023247577088"); + list.add("002212023103108284310565223768510582784"); + list.add("002212023103108320710565224623620861952"); + list.add("002212023103109371810565241025204305920"); + list.add("002212023103110004510565246929108987904"); + list.add("002212023103110573110565261212684644352"); + list.add("002212023103113111810565294882382778368"); + list.add("002212023103113225910565297822367227904"); + list.add("002212023103114134410565310594719662080"); + list.add("002212023103114200710565312198227066880"); + list.add("002212023103115273910565329197467062272"); + list.add("002212023103115282310565329381728022528"); + list.add("002212023103115455310565333784387121152"); + list.add("002212023103116134010565340774007672832"); + list.add("002212023103116375710565346886088900608"); + list.add("002212023103118351910565376422500470784"); + list.add("002212023103118574410565382064874811392"); + list.add("002212023103119120810565385689626378240"); + list.add("002212023103119562110565396817437356032"); + list.add("002212023103122173210565432347412201472"); return list; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index 40d974aef..908bdfcf1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -128,12 +128,10 @@ public interface OrderBasicInfoService{ /** * 根据交易记录结算订单 - * @param data 交易记录数据 - * @param orderBasicInfo * @deprecated 该方法废弃 {@link AbstractProgramLogic#settleOrder(TransactionRecordsData, OrderBasicInfo)} instead. */ @Deprecated - void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo); + // void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo); /** * 关闭15分钟未支付订单 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 92303ce3b..076bd293e 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 @@ -729,61 +729,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return queryChargingByPileSnAndConnectorCode(pileSn, connectorCode); } - /** - * 结算订单逻辑/订单结算逻辑 - * - * @param data 交易记录数据 - * @param orderBasicInfo 订单主表信息,由调用方传过来 - */ - @Override - public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) { - logger.info("结算订单start data:{}, orderBasicInfo:{}", data.toString(), orderBasicInfo.toString()); - // 判断订单状态 - if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) { - logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode()); - return; - } - // 获取更新数据后的orderBasicInfo对象 - returnUpdateOrderBasicInfo(orderBasicInfo, data); - // 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据 - OrderDetail orderDetail = returnUpdateOrderDetail(orderBasicInfo, data); - // 更新数据库 - OrderTransactionDTO dto = new OrderTransactionDTO(); - dto.setOrderBasicInfo(orderBasicInfo); - dto.setOrderDetail(orderDetail); - transactionService.doUpdateOrder(dto); - - // 订单支付结算and退款, delay商户部分解冻并退款, 非delay商户全部解冻并退款 - orderPaymentSettlementAndRefund(orderBasicInfo); - - // 将卡/vin状态解锁 - if (!StringUtils.equals("0000000000000000", data.getLogicCard())) { - cardStatusUnlocked(orderBasicInfo.getLogicCard()); - } - - // 如果是vin启动,将启动锁定状态改为正常 - if (StringUtils.equals(data.getTransactionIdentifier(), "05")) { - vinStatusUnlocked(data.getVinCode()); - } - - // 发送停止充电订阅消息 - sendMsg(orderBasicInfo); - - // 从redis中取出实时记录保存到表中 - realTimeMonitorDataRedis2DB(orderBasicInfo.getTransactionCode(), orderBasicInfo.getOrderCode()); - - // TODO 如果该站点的停车场优惠券信息配置不为空,则需绑定一张优惠券 - - logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSONObject.toJSONString(dto)); - } - - /** - * 记账 - */ - // private void doUpdateClearingBill(OrderSettleResult orderSettleResult) { - // logger.info("orderSettleResult:{}", JSON.toJSONString(orderSettleResult)); - // } - /** * 订单分账逻辑 * 订单结算完成,就执行清分and退款 @@ -3085,6 +3030,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { /** * 计算启动金额 + * 2024年1月9日10点24分 下发金额不变,由结算时计算优惠金额 */ private BigDecimal computeChargeAmount(String merchantId, String stationId, String memberId, BigDecimal payAmount) { // 默认折扣100% diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 4c61e549d..5dd9e7af6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -438,7 +438,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { } /** - * 订单结算 + * 订单结算/结算订单逻辑/订单结算逻辑 */ @Override public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) { @@ -452,6 +452,8 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { returnUpdateOrderBasicInfo(orderBasicInfo, data); // 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据 OrderDetail orderDetail = returnUpdateOrderDetail(orderBasicInfo, data); + // 计算订单折扣 calculateOrderDiscounts + calculateOrderDiscounts(orderBasicInfo, orderDetail); // 更新数据库 OrderTransactionDTO dto = new OrderTransactionDTO(); dto.setOrderBasicInfo(orderBasicInfo); @@ -480,6 +482,15 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSONObject.toJSONString(dto)); } + /** + * 计算订单折扣 + * @param orderBasicInfo 订单主表 + * @param orderDetail 订单详情 + */ + private void calculateOrderDiscounts(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) { + + } + // uniApp 发送停止充电订阅消息 private void sendMsg(OrderBasicInfo orderBasicInfo) { try { From 30cfdbdef2cc8cc2a19c55d966361f85b4521854 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 9 Jan 2024 17:07:12 +0800 Subject: [PATCH 2/4] update --- .../programlogic/AbstractProgramLogic.java | 25 ++- .../DelayMerchantProgramLogic.java | 149 +++++------------- 2 files changed, 58 insertions(+), 116 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 22c238126..732547e47 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -105,6 +105,9 @@ public abstract class AbstractProgramLogic implements InitializingBean { @Autowired protected MemberWalletInfoService memberWalletInfoService; + @Autowired + protected MemberGroupService memberGroupService; + @Autowired protected RedisCache redisCache; @@ -424,30 +427,46 @@ public abstract class AbstractProgramLogic implements InitializingBean { * @return */ protected Map calculateReturnAmount(BigDecimal principalPay, BigDecimal giftPay, BigDecimal orderAmount) { + return calculateReturnAmount(principalPay, giftPay, orderAmount, BigDecimal.ZERO); + } + + /** + * 余额支付 计算需要退回的金额 + * 【公共方法】 + * @param principalPay 本金支付金额 + * @param giftPay 赠送金额支付的金额 + * @param orderAmount 订单消费金额 + * @param discountAmount 订单折扣金额 + * @return + */ + protected Map calculateReturnAmount(BigDecimal principalPay, BigDecimal giftPay, BigDecimal orderAmount, BigDecimal discountAmount) { Map resultMap = Maps.newHashMap(); // 消费金额优先使用本金 BigDecimal returnPrincipal = null; // 退回本金金额 BigDecimal returnGift = null; // 退回赠送金额 + // 实际消费金额 = 订单消费金额 - 订单折扣金额 + BigDecimal amountDue = orderAmount.subtract(discountAmount); + // 余额支付 有3种情况 if (principalPay != null && giftPay == null) { // 只有本金支付 - BigDecimal subtract = principalPay.subtract(orderAmount); + BigDecimal subtract = principalPay.subtract(amountDue); if (subtract.compareTo(BigDecimal.ZERO) > 0) { returnPrincipal = subtract; } } if (principalPay == null && giftPay != null) { // 只有赠送金额支付 - BigDecimal subtract = giftPay.subtract(orderAmount); + BigDecimal subtract = giftPay.subtract(amountDue); if (subtract.compareTo(BigDecimal.ZERO) > 0) { returnGift = subtract; } } if (principalPay != null && giftPay != null) { // 本金+赠送支付 - BigDecimal subtract = principalPay.subtract(orderAmount); + BigDecimal subtract = principalPay.subtract(amountDue); if (subtract.compareTo(BigDecimal.ZERO) > 0) { // 本金减掉订单金额后还有剩余,那就把剩余的退回,赠送原封不动退回 returnPrincipal = subtract; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 5dd9e7af6..d2201f2a7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -31,6 +31,7 @@ import com.jsowell.pile.dto.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; +import com.jsowell.pile.vo.web.MemberDiscountVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; import com.jsowell.wxpay.dto.WechatSendMsgDTO; @@ -40,6 +41,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.time.LocalDateTime; import java.util.List; @@ -77,119 +79,6 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { return saveOrder2Database(dto); } - /** - * 生成订单编号 - * - * @return - */ - // private String generateNewOrderCode() { - // while (true) { - // String orderCode = "C" + IdUtils.getOrderCode(); - // // 通过orderCode查询是否已经存在 - // OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); - // if (orderBasicInfo == null) { - // return orderCode; - // } - // } - // } - - /** - * 保存订单信息到数据库 - * - * @param dto - * @return - */ - // protected OrderBasicInfo saveOrder2Database(GenerateOrderDTO dto) throws ParseException { - // String orderCode = generateNewOrderCode(); - // String transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode()); - // - // if (StringUtils.isBlank(dto.getStartType())) { - // dto.setStartType(StartTypeEnum.NOW.getValue()); - // } - // - // String stationId = dto.getPileConnector().getStationId(); - // // 查询站点信息 - // PileStationInfo pileStationInfo = pileStationInfoService.selectPileStationInfoById(Long.valueOf(stationId)); - // String merchantId = pileStationInfo != null ? String.valueOf(pileStationInfo.getMerchantId()) : ""; - // String plateNumber = dto.getPlateNumber() != null ? dto.getPlateNumber() : ""; - // // 订单基本信息 - // OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() - // .orderCode(orderCode) - // .transactionCode(transactionCode) - // .orderStatus(OrderStatusEnum.NOT_START.getValue()) - // .memberId(dto.getMemberId()) - // .stationId(stationId) - // .merchantId(merchantId) - // .pileSn(dto.getPileSn()) - // .connectorCode(dto.getConnectorCode()) - // .pileConnectorCode(dto.getPileSn() + dto.getConnectorCode()) - // .startMode(dto.getStartMode()) - // .payStatus(Constants.ZERO) - // .payAmount(dto.getChargeAmount()) - // .payMode(dto.getPayMode()) - // .plateNumber(plateNumber) - // .orderAmount(BigDecimal.ZERO) - // .virtualAmount(BigDecimal.ZERO) - // .settleAmount(BigDecimal.ZERO) - // .startType(dto.getStartType()) - // .build(); - // if (StringUtils.equals(dto.getStartMode(), StartModeEnum.AUTH_CARD.getValue())) { - // // 鉴权卡启动 - // orderBasicInfo.setLogicCard(dto.getPileAuthCardInfo().getLogicCard()); - // } - // if (StringUtils.equals(dto.getStartMode(), StartModeEnum.VIN_CODE.getValue())) { - // // vin启动 - // MemberPlateNumberRelation memberPlateNumberRelation = dto.getMemberPlateNumberRelation(); - // if (memberPlateNumberRelation != null) { - // if (StringUtils.isNotBlank(memberPlateNumberRelation.getVinCode())) { - // orderBasicInfo.setVinCode(memberPlateNumberRelation.getVinCode()); - // } - // if (StringUtils.isNotBlank(memberPlateNumberRelation.getLicensePlateNumber())) { - // orderBasicInfo.setPlateNumber(memberPlateNumberRelation.getLicensePlateNumber()); - // } - // } - // } - // - // if (StringUtils.equals(dto.getStartType(), StartTypeEnum.APPOINTMENT.getValue())) { - // orderBasicInfo.setAppointmentTime(DateUtils.parseDate(dto.getAppointmentTime(), DateUtils.YYYY_MM_DD_HH_MM_SS)); - // } - // - // // 订单详情 - // BillingTemplateVO billingTemplate = dto.getBillingTemplate(); - // logger.info("订单使用的计费模板-orderCode:{}, billingTemplate:{}", orderCode, JSONObject.toJSONString(billingTemplate)); - // BigDecimal sharpElectricityPrice = billingTemplate.getSharpElectricityPrice() != null ? billingTemplate.getSharpElectricityPrice() : BigDecimal.ZERO; - // BigDecimal sharpServicePrice = billingTemplate.getSharpServicePrice() != null ? billingTemplate.getSharpServicePrice() : BigDecimal.ZERO; - // BigDecimal peakElectricityPrice = billingTemplate.getPeakElectricityPrice() != null ? billingTemplate.getPeakElectricityPrice() : BigDecimal.ZERO; - // BigDecimal peakServicePrice = billingTemplate.getPeakServicePrice() != null ? billingTemplate.getPeakServicePrice() : BigDecimal.ZERO; - // BigDecimal flatElectricityPrice = billingTemplate.getFlatElectricityPrice() != null ? billingTemplate.getFlatElectricityPrice() : BigDecimal.ZERO; - // BigDecimal flatServicePrice = billingTemplate.getFlatServicePrice() != null ? billingTemplate.getFlatServicePrice() : BigDecimal.ZERO; - // BigDecimal valleyElectricityPrice = billingTemplate.getValleyElectricityPrice() != null ? billingTemplate.getValleyElectricityPrice() : BigDecimal.ZERO; - // BigDecimal valleyServicePrice = billingTemplate.getValleyServicePrice() != null ? billingTemplate.getValleyServicePrice() : BigDecimal.ZERO; - // - // OrderDetail orderDetail = OrderDetail.builder() - // .orderCode(orderCode) - // .sharpPrice(sharpElectricityPrice.add(sharpServicePrice)) - // .sharpElectricityPrice(sharpElectricityPrice) - // .sharpServicePrice(sharpServicePrice) - // .peakPrice(peakElectricityPrice.add(peakServicePrice)) - // .peakElectricityPrice(peakElectricityPrice) - // .peakServicePrice(peakServicePrice) - // .flatPrice(flatElectricityPrice.add(flatServicePrice)) - // .flatElectricityPrice(flatElectricityPrice) - // .flatServicePrice(flatServicePrice) - // .valleyPrice(valleyElectricityPrice.add(valleyServicePrice)) - // .valleyElectricityPrice(valleyElectricityPrice) - // .valleyServicePrice(valleyServicePrice) - // .build(); - // - // OrderTransactionDTO createOrderTransactionDTO = OrderTransactionDTO.builder() - // .orderBasicInfo(orderBasicInfo) - // .orderDetail(orderDetail) - // .build(); - // transactionService.doCreateOrder(createOrderTransactionDTO); - // return orderBasicInfo; - // } - @Override public Map payOrder(PayOrderDTO dto) { logger.info("【{}】-支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); @@ -488,7 +377,41 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { * @param orderDetail 订单详情 */ private void calculateOrderDiscounts(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) { + String memberId = orderBasicInfo.getMemberId(); // 会员id + String merchantId = orderBasicInfo.getMerchantId(); // 运营商id + String stationId = orderBasicInfo.getStationId(); // 站点id + // 电费折扣金额 + BigDecimal discountElectricityAmount = BigDecimal.ZERO; + // 服务费折扣金额 + BigDecimal discountServiceAmount = BigDecimal.ZERO; + + // 查询会员在此站点会员折扣 + MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscount(merchantId, stationId, memberId); + if (memberDiscountVO != null) { + BigDecimal discount = memberDiscountVO.getDiscount(); // 折扣率 + String groupType = memberDiscountVO.getGroupType(); // 类型(1-服务费折扣,2-电费折扣 ,3-电费和服务费一起折扣) + BigDecimal totalElectricityAmount = orderDetail.getTotalElectricityAmount(); // 电费 + BigDecimal totalServiceAmount = orderDetail.getTotalServiceAmount(); // 服务费 + + BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + if (Constants.ONE.equals(groupType)) { + discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); + } else if (Constants.TWO.equals(groupType)) { + discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); + } else { + // BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); + // BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); + } + } + // 订单折扣金额 + BigDecimal discountAmount = discountServiceAmount.add(discountElectricityAmount); + orderBasicInfo.setDiscountAmount(discountAmount); + orderDetail.setDiscountElectricityAmount(discountElectricityAmount); + orderDetail.setDiscountServiceAmount(discountServiceAmount); } // uniApp 发送停止充电订阅消息 From ff893c1ec9c3c97e9d00574bed9776d243783a4d Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 9 Jan 2024 17:09:02 +0800 Subject: [PATCH 3/4] =?UTF-8?q?update=20=E8=AE=A1=E7=AE=97=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BC=9A=E5=91=98=E6=8A=98=E6=89=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programlogic/AbstractProgramLogic.java | 48 +++++++++++++++++-- .../DelayMerchantProgramLogic.java | 45 ----------------- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 732547e47..592f94840 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -23,10 +23,7 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; -import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; -import com.jsowell.pile.vo.web.BillingTemplateVO; -import com.jsowell.pile.vo.web.OrderDetailInfoVO; -import com.jsowell.pile.vo.web.PileStationVO; +import com.jsowell.pile.vo.web.*; import com.jsowell.wxpay.service.WxAppletRemoteService; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; @@ -751,4 +748,47 @@ public abstract class AbstractProgramLogic implements InitializingBean { transactionService.doCreateOrder(createOrderTransactionDTO); return orderBasicInfo; } + + /** + * 计算订单折扣 + * @param orderBasicInfo 订单主表 + * @param orderDetail 订单详情 + */ + protected void calculateOrderDiscounts(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) { + String memberId = orderBasicInfo.getMemberId(); // 会员id + String merchantId = orderBasicInfo.getMerchantId(); // 运营商id + String stationId = orderBasicInfo.getStationId(); // 站点id + + // 电费折扣金额 + BigDecimal discountElectricityAmount = BigDecimal.ZERO; + // 服务费折扣金额 + BigDecimal discountServiceAmount = BigDecimal.ZERO; + + // 查询会员在此站点会员折扣 + MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscount(merchantId, stationId, memberId); + if (memberDiscountVO != null) { + BigDecimal discount = memberDiscountVO.getDiscount(); // 折扣率 + String groupType = memberDiscountVO.getGroupType(); // 类型(1-服务费折扣,2-电费折扣 ,3-电费和服务费一起折扣) + BigDecimal totalElectricityAmount = orderDetail.getTotalElectricityAmount(); // 电费 + BigDecimal totalServiceAmount = orderDetail.getTotalServiceAmount(); // 服务费 + + BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + if (Constants.ONE.equals(groupType)) { + discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); + } else if (Constants.TWO.equals(groupType)) { + discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); + } else { + // BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); + // BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); + discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); + } + } + // 订单折扣金额 + BigDecimal discountAmount = discountServiceAmount.add(discountElectricityAmount); + orderBasicInfo.setDiscountAmount(discountAmount); + orderDetail.setDiscountElectricityAmount(discountElectricityAmount); + orderDetail.setDiscountServiceAmount(discountServiceAmount); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index d2201f2a7..ee62f2b93 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -31,7 +31,6 @@ import com.jsowell.pile.dto.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; -import com.jsowell.pile.vo.web.MemberDiscountVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; import com.jsowell.wxpay.dto.WechatSendMsgDTO; @@ -41,7 +40,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.math.RoundingMode; import java.text.ParseException; import java.time.LocalDateTime; import java.util.List; @@ -371,49 +369,6 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { logger.info("结算订单end:{} OrderTransactionDTO:{}", orderBasicInfo.getOrderCode(), JSONObject.toJSONString(dto)); } - /** - * 计算订单折扣 - * @param orderBasicInfo 订单主表 - * @param orderDetail 订单详情 - */ - private void calculateOrderDiscounts(OrderBasicInfo orderBasicInfo, OrderDetail orderDetail) { - String memberId = orderBasicInfo.getMemberId(); // 会员id - String merchantId = orderBasicInfo.getMerchantId(); // 运营商id - String stationId = orderBasicInfo.getStationId(); // 站点id - - // 电费折扣金额 - BigDecimal discountElectricityAmount = BigDecimal.ZERO; - // 服务费折扣金额 - BigDecimal discountServiceAmount = BigDecimal.ZERO; - - // 查询会员在此站点会员折扣 - MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscount(merchantId, stationId, memberId); - if (memberDiscountVO != null) { - BigDecimal discount = memberDiscountVO.getDiscount(); // 折扣率 - String groupType = memberDiscountVO.getGroupType(); // 类型(1-服务费折扣,2-电费折扣 ,3-电费和服务费一起折扣) - BigDecimal totalElectricityAmount = orderDetail.getTotalElectricityAmount(); // 电费 - BigDecimal totalServiceAmount = orderDetail.getTotalServiceAmount(); // 服务费 - - BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); - BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); - if (Constants.ONE.equals(groupType)) { - discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); - } else if (Constants.TWO.equals(groupType)) { - discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); - } else { - // BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); - discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); - // BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); - discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); - } - } - // 订单折扣金额 - BigDecimal discountAmount = discountServiceAmount.add(discountElectricityAmount); - orderBasicInfo.setDiscountAmount(discountAmount); - orderDetail.setDiscountElectricityAmount(discountElectricityAmount); - orderDetail.setDiscountServiceAmount(discountServiceAmount); - } - // uniApp 发送停止充电订阅消息 private void sendMsg(OrderBasicInfo orderBasicInfo) { try { From 0f856747a71089551c8fa68ba51ed7e5ad559896 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 9 Jan 2024 17:17:23 +0800 Subject: [PATCH 4/4] =?UTF-8?q?update=20=E8=AE=A1=E7=AE=97=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BC=9A=E5=91=98=E6=8A=98=E6=89=A3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsowell/pile/service/programlogic/AbstractProgramLogic.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 592f94840..b9685c55c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -788,6 +788,8 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 订单折扣金额 BigDecimal discountAmount = discountServiceAmount.add(discountElectricityAmount); orderBasicInfo.setDiscountAmount(discountAmount); + // 更新退款金额 = 退款金额 - 折扣金额 + orderBasicInfo.setRefundAmount(orderBasicInfo.getRefundAmount().subtract(discountAmount)); orderDetail.setDiscountElectricityAmount(discountElectricityAmount); orderDetail.setDiscountServiceAmount(discountServiceAmount); }