OmsTransOrderServiceImpl.java 375 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.google.gson.JsonObject;
  6. import com.steerinfo.dil.feign.*;
  7. import com.steerinfo.dil.mapper.*;
  8. import com.steerinfo.dil.model.*;
  9. import com.steerinfo.dil.util.DaZongUtil;
  10. import com.steerinfo.dil.util.DataChange;
  11. import com.steerinfo.dil.util.EntityDispose;
  12. import com.steerinfo.dil.util.WMSUtil;
  13. import com.steerinfo.framework.controller.RESTfulResult;
  14. import com.steerinfo.framework.datasource.DataSourceKey;
  15. import com.steerinfo.framework.datasource.TargetDataSource;
  16. import com.sun.corba.se.spi.ior.ObjectKey;
  17. import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
  18. import org.apache.log4j.Logger;
  19. import org.checkerframework.checker.units.qual.A;
  20. import org.omg.CORBA.OBJ_ADAPTER;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Propagation;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import javax.annotation.Resource;
  26. import javax.xml.crypto.Data;
  27. import java.io.ByteArrayInputStream;
  28. import java.io.ObjectInputStream;
  29. import java.io.ObjectOutputStream;
  30. import java.io.Serializable;
  31. import java.math.BigDecimal;
  32. import java.math.RoundingMode;
  33. import java.text.DateFormat;
  34. import java.text.ParseException;
  35. import java.text.SimpleDateFormat;
  36. import java.util.*;
  37. import java.util.concurrent.*;
  38. import java.util.regex.Matcher;
  39. import java.util.regex.Pattern;
  40. import java.util.stream.Collector;
  41. import java.util.stream.Collectors;
  42. /**
  43. * OmsTransOrder服务实现:
  44. *
  45. * @author generator
  46. * @version 1.0-SNAPSHORT 2023-11-02 02:31
  47. * 类描述
  48. * 修订历史:
  49. * 日期:2023-11-02
  50. * 作者:generator
  51. * 参考:
  52. * 描述:OmsTransOrder服务实现
  53. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  54. * @see null
  55. */
  56. @Service(value = "omsTransOrderService")
  57. public class OmsTransOrderServiceImpl {
  58. static final Logger log = Logger.getLogger(OmsTransOrderServiceImpl.class);
  59. @Autowired
  60. private OmsTransOrderMapper omsTransOrderMapper;
  61. @Autowired
  62. private OmsOrderChildMapper omsOrderChildMapper;
  63. @Autowired
  64. private TmsEnfactoryResultMapper tmsEnfactoryResultMapper;
  65. @Autowired
  66. private TmsOutfactoryResultMapper tmsOutfactoryResultMapper;
  67. @Autowired
  68. private TmsLoadResultMapper tmsLoadResultMapper;
  69. @Autowired
  70. private TmsUnloadResultMapper tmsUnloadResultMapper;
  71. @Autowired
  72. private TmsWeightResultMapper tmsWeightResultMapper;
  73. @Autowired
  74. private TmsQualityResultMapper tmsQualityResultMapper;
  75. @Autowired
  76. private TmsArrivalResultMapper tmsArrivalResultMapper;
  77. @Autowired
  78. private TmsReceiptResultMapper tmsReceiptResultMapper;
  79. @Autowired
  80. private TmsReplaceFrontResultMapper tmsReplaceFrontResultMapper;
  81. @Autowired
  82. private TmsSignInResultMapper tmsSignInResultMapper;
  83. @Autowired
  84. private TmsTimingResultMapper tmsTimingResultMapper;
  85. @Autowired
  86. private EmsFeign emsFeign;
  87. @Autowired
  88. private ReportFeign reportFeign;
  89. @Resource
  90. private AmsPlanChildMapper amsPlanChildMapper;
  91. @Resource
  92. private AmsTransPlanMapper amsTransPlanMapper;
  93. @Autowired
  94. private OmsTransOrderServiceImpl omsTransOrderService;
  95. @Autowired
  96. private DaZongUtil daZongUtil;
  97. @Autowired
  98. private WMSUtil wmsUtil;
  99. @Autowired
  100. private WebsocketFeign websocketFeign;
  101. @Autowired
  102. private AmsRequirementChildMapper amsRequirementChildMapper;
  103. @Autowired
  104. private AmsTransRequirementMapper amsTransRequirementMapper;
  105. @Autowired
  106. private RmsFeign rmsFeign;
  107. @Autowired
  108. private WmsFeign wmsFeign;
  109. @Autowired
  110. DzFeign dzFeign;
  111. @Autowired
  112. AmsFeign amsFeign;
  113. @Autowired
  114. OmsOrderChildServiceImpl omsOrderChildService;
  115. @Autowired
  116. AmsBindRequirementMapper amsBindRequirementMapper;
  117. @Autowired
  118. TmsAddenergyResultMapper tmsAddenergyResultMapper;
  119. @Autowired
  120. TmsMaintenanceResultMapper tmsMaintenanceResultMapper;
  121. @Autowired
  122. TmiFeign tmiFeign;
  123. @Resource
  124. EntityDispose entityDispose;
  125. @Autowired
  126. SyncProductListMapper syncProductListMapper;
  127. @Autowired
  128. DilContrastingRelationMapper dilContrastingRelationMapper;
  129. @Autowired
  130. TmsWeightResultServiceImpl tmsWeightResultService;
  131. @Transactional(rollbackFor = Exception.class)
  132. public String dispatchOrder(Map<String, Object> map) throws Exception {
  133. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  134. BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId"));
  135. BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId"));
  136. BigDecimal driverId2 = DataChange.dataToBigDecimal(map.get("driverId2"));
  137. String taskType = map.get("taskType") + "";
  138. String remark = map.get("remark") + "";
  139. String isMultiple = DataChange.getString(map.get("isMultiple"));
  140. Map<String,Object> capacity = omsTransOrderMapper.getCapacityById(capacityId);
  141. if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0) {
  142. throw new Exception("运力或司机不能为空!");
  143. } else if (capacity.get("capacityBlacklist").toString().equals("是")) {
  144. throw new Exception("不允许派给黑名单内的车辆!");
  145. }
  146. //新增运输订单
  147. OmsTransOrder omsTransOrder = new OmsTransOrder();
  148. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  149. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  150. omsTransOrder.getTransOrderId().intValue()));
  151. omsTransOrder.setCapacityId(capacityId);
  152. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  153. omsTransOrder.setLineId(lineId);
  154. omsTransOrder.setIssueTime(new Date());
  155. omsTransOrder.setInsertTime(new Date());
  156. omsTransOrder.setDeleted(new BigDecimal(4));
  157. omsTransOrder.setInsertUsername(map.get("userName").toString());
  158. omsTransOrder.setAlternateFields1(taskType);
  159. omsTransOrder.setAlternateFields3(isMultiple);
  160. omsTransOrder.setAlternateFields8(map.get("multipleType") == null ? null : map.get("multipleType").toString());
  161. omsTransOrder.setAlternateFields28(map.get("multipleTimes") == null ? "1" : map.get("multipleTimes").toString());
  162. omsTransOrder.setInsertUpdateRemark(remark);
  163. //if (driverId == null) {
  164. // List<BigDecimal> driverIds = omsOrderChildMapper.findDriverDetails(map);
  165. // if(driverIds.size() <= 0){
  166. // throw new Exception("该车未查询到司机,请先维护司机排班!");
  167. // }
  168. // omsTransOrder.setDriverId(driverIds.get(0));
  169. // if(driverIds.size() > 1){
  170. // omsTransOrder.setDriverId2(driverIds.get(1));
  171. // }
  172. //}else{
  173. // omsTransOrder.setDriverId(driverId);
  174. //
  175. //
  176. //}
  177. omsTransOrder.setDriverId(driverId);
  178. omsTransOrder.setDriverId2(driverId2);
  179. map.put("transOrderId", omsTransOrder.getTransOrderId());
  180. //新增运输订单子表
  181. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  182. //
  183. List<Map<String, Object>> planChildren = (ArrayList) map.get("planChildren");
  184. if (planChildren.size() <= 0) {
  185. throw new Exception("没有计划,无法派单!");
  186. }
  187. BigDecimal businessType = null;
  188. String businessScene = "";
  189. for (Map<String, Object> planChild : planChildren) {
  190. //校验分录余额
  191. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild(planChild);
  192. if (planDetails == null) {
  193. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  194. }
  195. businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  196. businessScene = DataChange.getString(planDetails.get("businessScene"));
  197. if (businessType == null) {
  198. throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!");
  199. }
  200. // if((businessScene.equals("采购") || businessScene.equals("销售")) && omsTransOrderMapper.countDriverScene(driverId,businessScene) > 0){
  201. // throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  202. // }
  203. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  204. switch (controlMode) {
  205. case 0:
  206. //不控制
  207. break;
  208. case 1:
  209. //1:数量控制
  210. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  211. BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialNumber"));
  212. if (materialNumber.compareTo(numberLeft) > 0) {
  213. throw new Exception("数量超出需求限制!");
  214. }
  215. break;
  216. case 2:
  217. //2:金额控制
  218. break;
  219. case 3:
  220. //3:车数控制
  221. BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft"));
  222. BigDecimal truckNumber = BigDecimal.ONE;
  223. if (truckNumber.compareTo(truckLeft) > 0) {
  224. throw new Exception("车辆数量超出需求限制!");
  225. }
  226. break;
  227. default:
  228. throw new Exception("未知的控制类型!");
  229. }
  230. omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId").toString());
  231. omsTransOrderMapper.updatePlanStatus(planChild);
  232. OmsOrderChild omsOrderChild = new OmsOrderChild();
  233. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  234. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  235. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  236. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId")));
  237. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(planChild.get("materialNumber")));
  238. omsOrderChild.setInsertTime(new Date());
  239. omsOrderChild.setInsertUsername(map.get("userId").toString());
  240. omsOrderChild.setDeleted(BigDecimal.ZERO);
  241. entityDispose.disposeOrderChild(omsOrderChild);
  242. omsOrderChildren.add(omsOrderChild);
  243. //推送大宗
  244. Map<String,Object> config = omsTransOrderMapper.getConfigByName("派单推送大宗");
  245. config = config == null ? new HashMap<>() : config;
  246. if("否".equals(config.get("valueString"))){
  247. log.info("配置如此,无需上传大宗");
  248. }else{
  249. dispatchPush(businessType,capacityId,driverId,omsTransOrder,omsOrderChild,planDetails);
  250. }
  251. }
  252. omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型
  253. entityDispose.disposeOmsTransOrder(omsTransOrder);
  254. omsTransOrderMapper.insertSelective(omsTransOrder);
  255. omsOrderChildMapper.batchInsert(omsOrderChildren);
  256. //创建新实绩
  257. creatTransResult(lineId, omsTransOrder.getTransOrderId(), omsOrderChildren.get(0).getPlanChildId(),omsTransOrder.getInsertUsername());
  258. if(businessScene.equals("生产")){
  259. //查询所派车辆所属承运商
  260. Map map1 = new HashMap<>();
  261. List list = new ArrayList();
  262. list.add(0,map.get("capacityId").toString());
  263. map1.put("capacityId",list);
  264. Map<String, Object>capacityMap = rmsFeign.getCapacityList(map1);
  265. Map<String, Object> Datamap = (Map<String, Object>) capacityMap.get("data");
  266. List<Map<String, Object>> capacityList=(List) Datamap.get("list");
  267. List<Map<String, Object>> listValue = capacityList.stream().filter(map2 -> map2.get("companyId").toString().equals(map.get("carrierId").toString())).collect(Collectors.toList());
  268. if (listValue.size()==0){
  269. HashMap<String, Object> sendMap = new HashMap<>();
  270. sendMap.put("userId",map.get("userId"));
  271. sendMap.put("userName",map.get("userName"));
  272. sendMap.put("title","提示:车辆与业务所属单位不一致");
  273. sendMap.put("sendMessage","所派车辆与业务所属单位不一致,请补录租赁合同并上传凭证!");
  274. sendMap.put("sendType","01");
  275. String websocketId = map.get("ssoId").toString();
  276. RESTfulResult resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap);
  277. }
  278. //派车时需满足所有运力类型才可以派车
  279. String capacityTypeId=map.get("capacityTypeId").toString();
  280. List<Map<String, Object>> capacityTypeIdList = capacityList.stream().filter(map2 -> map2.get("capacityTypeId").toString().equals(map.get("capacityTypeId").toString())).collect(Collectors.toList());
  281. if (capacityTypeIdList.size()<= 0){
  282. throw new Exception("派车时需满足所有运力类型才可以派车!");
  283. }
  284. }
  285. //去除重复数据
  286. Set<BigDecimal> set = new HashSet();
  287. for (OmsOrderChild omsOrderChild : omsOrderChildren) {
  288. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  289. set.add(amsPlanChild.getRequirementChildId());
  290. listAggCapacity(amsPlanChild.getPlanChildId());
  291. }
  292. for (BigDecimal requirementChildId : set) {
  293. //反写需求总重量
  294. sumWeight(requirementChildId);
  295. }
  296. return "派车成功!";
  297. }
  298. @Transactional(rollbackFor = Exception.class,timeout = 120)
  299. public String batchDispatch(Map<String, Object> map) throws Exception {
  300. //校验物流单是否超过截止时间
  301. String res = omsTransOrderService.verificationDeadline(map);
  302. if (!res.equals("OK")) {
  303. throw new Exception(res);
  304. }
  305. //查询所派车辆所属承运商
  306. List<Map<String,Object>> batchlist =(List)map.get("list");
  307. List capacityidList = new ArrayList();
  308. for (int i = 0; i <batchlist.size() ; i++) {
  309. capacityidList.add(batchlist.get(i).get("capacityId"));
  310. }
  311. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  312. String userId = map.get("userId").toString();
  313. String userName = map.get("userName").toString();
  314. String isMultiple = null;
  315. String multipleTimes = "1";
  316. String multipleType = null;
  317. Set<String> capacitySet = new HashSet<String>();
  318. Set<String> driverSet = new HashSet<>();
  319. if(map.get("isMultiple") != null){
  320. isMultiple = map.get("isMultiple").toString();
  321. }
  322. if(map.get("multipleTimes") != null) {
  323. multipleTimes = map.get("multipleTimes").toString();
  324. }
  325. if(map.get("multipleType") != null){
  326. multipleType = map.get("multipleType").toString();
  327. }
  328. //车辆-司机
  329. List<Map<String, Object>> list = (ArrayList) map.get("list");
  330. if (list.size() <= 0) {
  331. throw new Exception("没有派车信息,无法新增!");
  332. }
  333. BigDecimal numberCount = BigDecimal.ZERO;
  334. for (Map<String, Object> item : list) {
  335. BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId"));
  336. BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId"));
  337. BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2"));
  338. Map<String,Object> capacity = omsTransOrderMapper.getCapacityById(capacityId);
  339. if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0) {
  340. throw new Exception("运力或司机不能为空!");
  341. } else if (capacitySet.contains("" + capacityId) || driverSet.contains("" + driverId) || driverSet.contains("" + driverId2)) {
  342. throw new Exception("不允许派重复的车辆或司机!");
  343. } else if (capacity.get("capacityBlacklist").toString().equals("是")) {
  344. throw new Exception("不允许派给黑名单内的车辆!");
  345. }else {
  346. capacitySet.add("" + capacityId);
  347. driverSet.add("" + driverId);
  348. if (driverId2.compareTo(BigDecimal.ZERO) != 0) {
  349. driverSet.add("" + driverId2);
  350. }
  351. numberCount = numberCount.add(DataChange.dataToBigDecimal(item.get("materialNumber")));
  352. }
  353. }
  354. //分录
  355. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild(map);
  356. if (planDetails == null) {
  357. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  358. }
  359. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  360. String businessScene = DataChange.getString(planDetails.get("businessScene"));
  361. if (businessType == null) {
  362. throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!");
  363. }
  364. if(lineId == null || lineId.compareTo(BigDecimal.ZERO) == 0){
  365. lineId = DataChange.dataToBigDecimal(planDetails.get("lineId"));
  366. }
  367. if("是".equals(planDetails.get("hruiRemark"))) {
  368. lineId = new BigDecimal(129991);
  369. }
  370. //校验分录余额
  371. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  372. switch (controlMode) {
  373. case 0:
  374. //不控制
  375. break;
  376. case 1:
  377. //1:数量控制
  378. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  379. BigDecimal materialNumber = numberCount;
  380. if (materialNumber.compareTo(numberLeft) > 0) {
  381. throw new Exception("数量超出需求限制!");
  382. }
  383. break;
  384. case 2:
  385. //2:金额控制
  386. break;
  387. case 3:
  388. //3:车数控制
  389. BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft"));
  390. BigDecimal truckNumber = new BigDecimal(list.size());
  391. if (truckNumber.compareTo(truckLeft) > 0) {
  392. throw new Exception("车辆数量超出需求限制!");
  393. }
  394. break;
  395. default:
  396. throw new Exception("未知的控制类型!");
  397. }
  398. //准备待新增的实绩
  399. List<OmsTransOrder> omsTransOrders = new ArrayList<>();
  400. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  401. for (Map<String, Object> item : list) {
  402. BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId"));
  403. BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId"));
  404. BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2"));
  405. String taskType = item.get("taskType") + "";
  406. String remark = item.get("remark") + "";
  407. if(item.get("isMultiple") != null){
  408. isMultiple = item.get("isMultiple").toString();
  409. }
  410. if(item.get("multipleTimes") != null) {
  411. multipleTimes = item.get("multipleTimes").toString();
  412. }
  413. if(item.get("multipleType") != null) {
  414. multipleType = item.get("multipleType").toString();
  415. }
  416. if((businessScene.equals("采购") || businessScene.equals("销售"))){
  417. //采购、销售类型校验是否已派单
  418. List<Map<String,Object>> existList = omsTransOrderMapper.getExistList(driverId,""+item.get("personnelCard"),businessScene);
  419. if(existList != null && existList.size() > 0){
  420. //若已派单,校验运单在大宗是否作废
  421. //Map<String,Object> param = new HashMap<>();
  422. //param.put("list",existList);
  423. //List<Map<String, Object>> pcdList = dzFeign.getTransResultList(param);
  424. //if(pcdList.size() == 0){
  425. // //throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  426. //}
  427. //for(Map<String, Object> pcd : pcdList){
  428. // String hsbz = ""+pcd.get("hsbz");
  429. // BigDecimal transOrderId = DataChange.dataToBigDecimal(pcd.get("transOrderId").toString());
  430. // if("4".equals(hsbz)){
  431. // //已作废,关闭旧运单
  432. // OmsTransOrder omsTransOrder = new OmsTransOrder();
  433. // omsTransOrder.setTransOrderId(transOrderId);
  434. // omsTransOrder.setDeleted(new BigDecimal(7));
  435. // omsTransOrder.setDeleteReason("大宗作废运单");
  436. // omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  437. // }else{
  438. // //存在未作废的旧运单
  439. // //throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  440. //
  441. // }
  442. //}
  443. throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  444. }
  445. }
  446. //新增运输订单
  447. OmsTransOrder omsTransOrder = new OmsTransOrder();
  448. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  449. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  450. omsTransOrder.getTransOrderId().intValue()));
  451. omsTransOrder.setCapacityId(capacityId);
  452. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  453. omsTransOrder.setLineId(lineId);
  454. omsTransOrder.setIssueTime(new Date());
  455. omsTransOrder.setInsertTime(new Date());
  456. omsTransOrder.setDeleted(new BigDecimal(4));
  457. omsTransOrder.setInsertUsername(userName);
  458. omsTransOrder.setDriverId(driverId);
  459. omsTransOrder.setDriverId2(driverId2);
  460. omsTransOrder.setCarrierId(Integer.parseInt(planDetails.get("carrierId").toString()));
  461. omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId").toString());
  462. omsTransOrder.setInsertUpdateRemark(remark);
  463. omsTransOrder.setAlternateFields1(taskType);
  464. omsTransOrder.setAlternateFields3(isMultiple);
  465. omsTransOrder.setAlternateFields8(multipleType);
  466. omsTransOrder.setAlternateFields28(multipleTimes);
  467. item.put("transOrderId", omsTransOrder.getTransOrderId());
  468. item.put("userId", userId);
  469. item.put("userName", userName);
  470. //新增运输订单子表
  471. omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型
  472. entityDispose.disposeOmsTransOrder(omsTransOrder);
  473. OmsOrderChild omsOrderChild = new OmsOrderChild();
  474. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  475. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  476. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  477. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId")));
  478. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(item.get("materialNumber")));
  479. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(item.get("materialWeight")));
  480. omsOrderChild.setAlternateFields3("" + item.get("allocation"));
  481. omsOrderChild.setOriginMaterialZjs(DataChange.dataToBigDecimal(item.get("originMaterialZjs")));
  482. omsOrderChild.setOriginPoundNo(item.get("originPoundNo") == null ? "":item.get("originPoundNo").toString());
  483. omsOrderChild.setAlternateFields4(item.get("originPoundUrl") == null ? "":item.get("originPoundUrl").toString());
  484. omsOrderChild.setOriginDate(DataChange.dataToDate(item.get("originDate")));
  485. omsOrderChild.setInsertTime(new Date());
  486. omsOrderChild.setInsertUsername(userName);
  487. omsOrderChild.setDeleted(BigDecimal.ZERO);
  488. omsOrderChild.setAlternateFields5(item.get("personnelCard") == null ? null : item.get("personnelCard").toString());
  489. omsOrderChild.setAlternateFields6(item.get("personnelPhone") == null ? null : item.get("personnelPhone").toString());
  490. entityDispose.disposeOrderChild(omsOrderChild);
  491. omsOrderChildren.add(omsOrderChild);
  492. omsTransOrders.add(omsTransOrder);
  493. //新增各类实绩
  494. creatTransResult(lineId, omsTransOrder.getTransOrderId(),omsOrderChild.getPlanChildId(), omsTransOrder.getInsertUsername());
  495. //推送大宗
  496. Map<String,Object> config = omsTransOrderMapper.getConfigByName("派单推送大宗");
  497. config = config == null ? new HashMap<>() : config;
  498. if("否".equals(config.get("valueString"))){
  499. log.info("派单推送大宗配置如此,无需上传大宗");
  500. }else{
  501. dispatchPush(businessType,capacityId,driverId,omsTransOrder,omsOrderChild,planDetails);
  502. }
  503. }
  504. //将计划状态变为已派车
  505. omsTransOrderMapper.updatePlanStatus(planDetails);
  506. omsTransOrderMapper.batchInsert(omsTransOrders);
  507. omsOrderChildMapper.batchInsert(omsOrderChildren);
  508. //消息推送
  509. //去除重复数据
  510. Set<BigDecimal> set = new HashSet();
  511. Set<BigDecimal> setPlan = new HashSet();
  512. for (OmsOrderChild omsOrderChild : omsOrderChildren) {
  513. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  514. set.add(amsPlanChild.getRequirementChildId());
  515. setPlan.add(omsOrderChild.getPlanChildId());
  516. }
  517. for (BigDecimal requirementChildId : set) {
  518. //反写需求总重量
  519. sumWeight(requirementChildId);
  520. }
  521. for (BigDecimal planChildId:setPlan) {
  522. sumWeightPlan(planChildId);
  523. }
  524. return "派车成功!";
  525. }
  526. @Transactional(rollbackFor = Exception.class,timeout = 120)
  527. public String batchDispatchSc(Map<String, Object> map) throws Exception {
  528. //查询所派车辆所属承运商
  529. Map map1 = new HashMap<>();
  530. List<Map<String,Object>> batchlist =(List)map.get("list");
  531. List capacityidList = new ArrayList();
  532. for (int i = 0; i <batchlist.size() ; i++) {
  533. capacityidList.add(batchlist.get(i).get("capacityId"));
  534. }
  535. map1.put("capacityId",capacityidList);
  536. map1.put("userId",map.get("userId"));
  537. //Map<String, Object>capacityMap = rmsFeign.getCapacityList(map1);
  538. //Map<String, Object> Datamap = (Map<String, Object>) capacityMap.get("data");
  539. //List<Map<String, Object>> capacityList=(List) Datamap.get("list");
  540. //List<Map<String, Object>> listValue = capacityList.stream().filter(map2 -> map2.get("companyId").toString().equals(map.get("carrierId").toString())).collect(Collectors.toList());
  541. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  542. String userId = map.get("userId").toString();
  543. String userName = map.get("userName").toString();
  544. Set<String> capacitySet = new HashSet<String>();
  545. Set<String> driverSet = new HashSet<>();
  546. //派车时需满足所有运力类型才可以派车
  547. //车辆-司机
  548. List<Map<String, Object>> list = (ArrayList) map.get("list");
  549. if (list.size() <= 0) {
  550. return "没有派车信息,无法新增!";
  551. }
  552. BigDecimal numberCount = BigDecimal.ZERO;
  553. for (Map<String, Object> item : list) {
  554. BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId"));
  555. BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId"));
  556. BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2"));
  557. Map<String,Object> capacity = omsTransOrderMapper.getCapacityById(capacityId);
  558. List<Map<String,Object>> driver = omsTransOrderMapper.getDriverById(driverId,driverId2);
  559. if(map.get("capacityTypeName") != null && (map.get("capacityTypeName").toString().contains("人工队") ||map.get("capacityTypeName").toString().contains("吊车"))) {
  560. }else if(map.get("capacityTypeName") == null || !map.get("capacityTypeName").toString().contains("人工队")){
  561. if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0
  562. ||driver==null||driver.size()<1) {
  563. throw new Exception("运力或司机不能为空!");
  564. }
  565. }
  566. /*else if (capacitySet.contains("" + capacityId) || driverSet.contains("" + driverId) || driverSet.contains("" + driverId2)) {
  567. throw new Exception("不允许派重复的车辆或司机!重复车辆为【"+(capacitySet.contains("" + capacityId)?capacity.get("capacityNumber"):"")+"】," +
  568. "重复司机为【"+
  569. (driverSet.contains("" + driverId)?driver.get(0).get("personnelName"):"")+"/"+
  570. (driverSet.contains("" + driverId2)&&Integer.parseInt(driverId2.toString())!=0?driver.get(1).get("personnelName"):"")
  571. +"】");
  572. } */else if (capacity.get("capacityBlacklist").toString().equals("是")) {
  573. throw new Exception("不允许派给黑名单内的车辆!");
  574. }else {
  575. capacitySet.add("" + capacityId);
  576. driverSet.add("" + driverId);
  577. if (driverId2.compareTo(BigDecimal.ZERO) != 0) {
  578. driverSet.add("" + driverId2);
  579. }
  580. numberCount.add(DataChange.dataToBigDecimal(item.get("materialNumber")));
  581. }
  582. }
  583. //分录
  584. //判断是否传递计划分录
  585. Map<String, Object> planDetails = null;
  586. if(map.get("planDetails")!=null&&map.get("planDetails") instanceof Map){
  587. planDetails = (Map<String, Object>) map.get("planDetails");
  588. }else {
  589. planDetails = omsOrderChildMapper.findPlanChild2(map);
  590. }
  591. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  592. if (planDetails == null) {
  593. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  594. } else if (businessType == null) {
  595. throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!");
  596. }
  597. //将计划状态变为已派车
  598. //omsTransOrderMapper.updatePlanStatus(planDetails);
  599. //准备待新增的实绩
  600. List<OmsTransOrder> omsTransOrders = new ArrayList<>();
  601. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  602. //修改需求车辆司机信息
  603. AmsTransRequirement requirement = amsTransRequirementMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planDetails.get("transRequirementId")));
  604. if(requirement.getRequirementEndTime().compareTo(new Date()) <= 0) {
  605. throw new Exception("当前时间大于需求截止时间,无法派车!");
  606. }
  607. AmsTransRequirement requirementUpdate = new AmsTransRequirement();
  608. requirementUpdate.setTransRequirementId(requirement.getTransRequirementId());
  609. int i = 1;
  610. List<String> dlivDirnoSeqList = new ArrayList<>();
  611. StringBuilder returnResult = new StringBuilder();
  612. for (Map<String, Object> item : list) {
  613. BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId"));
  614. BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId"));
  615. BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2"));
  616. //判断当前运单和司机是否是同一计划
  617. BigDecimal planChildId = DataChange.dataToBigDecimal(planDetails.get("planChildId"));
  618. List<Map<String,Object>> mapResult = omsTransOrderMapper.selectPlanIsCapacityDriver
  619. (planChildId,capacityId,driverId);
  620. if(mapResult!=null&&mapResult.size()>0){
  621. returnResult.append("司机【"+mapResult.get(0).get("personnelName")+"】-车号【"
  622. +mapResult.get(0).get("capacityNumber")+"】已在同一条计划派车|");
  623. continue;
  624. }
  625. String taskType = item.get("taskType") + "";
  626. String remark = item.get("remark") + "";
  627. //新增运输订单
  628. OmsTransOrder omsTransOrder = new OmsTransOrder();
  629. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  630. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  631. omsTransOrder.getTransOrderId().intValue()));
  632. omsTransOrder.setCapacityId(capacityId);
  633. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  634. omsTransOrder.setLineId(lineId);
  635. if(map.get("orderIssueTime") != null) {
  636. omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime")));
  637. }else{
  638. omsTransOrder.setIssueTime(new Date());
  639. }
  640. omsTransOrder.setInsertTime(new Date());
  641. omsTransOrder.setDeleted(new BigDecimal(4));
  642. omsTransOrder.setInsertUsername(userName);
  643. omsTransOrder.setDriverId(driverId);
  644. omsTransOrder.setDriverId2(driverId2);
  645. omsTransOrder.setCarrierId(Integer.parseInt(planDetails.get("carrierId").toString()));
  646. omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") == null ? null : planDetails.get("rootCompanyId").toString());
  647. omsTransOrder.setInsertUpdateRemark(remark);
  648. omsTransOrder.setAlternateFields1(taskType);
  649. omsTransOrder.setAlternateFields11(item.get("alternateFields11")!=null?item.get("alternateFields11").toString():null);
  650. omsTransOrder.setAlternateFields12(item.get("alternateFields12")!=null?item.get("alternateFields12").toString():null);
  651. omsTransOrder.setAlternateFields13(item.get("alternateFields13")!=null?item.get("alternateFields13").toString():null);
  652. omsTransOrder.setAlternateFields14(item.get("alternateFields14")!=null?item.get("alternateFields14").toString():null);
  653. omsTransOrder.setAlternateFields15(item.get("alternateFields15")!=null?item.get("alternateFields15").toString():null);
  654. item.put("transOrderId", omsTransOrder.getTransOrderId());
  655. item.put("userId", userId);
  656. item.put("userName", userName);
  657. AmsPlanChild amsPlanChild = null;
  658. if(map.get("amsPlanChild")!=null&&map.get("amsPlanChild") instanceof Map){
  659. ObjectMapper objectMapper = new ObjectMapper();
  660. objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  661. amsPlanChild = objectMapper.convertValue(map.get("amsPlanChild"),AmsPlanChild.class);
  662. }else{
  663. amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  664. }
  665. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  666. //新增运输订单子表
  667. omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型
  668. entityDispose.disposeOmsTransOrder(omsTransOrder);
  669. OmsOrderChild omsOrderChild = new OmsOrderChild();
  670. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  671. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  672. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  673. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId")));
  674. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(item.get("materialNumber")));
  675. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(item.get("materialWeight")));
  676. omsOrderChild.setAlternateFields3("" + item.get("allocation"));
  677. omsOrderChild.setInsertTime(new Date());
  678. omsOrderChild.setInsertUsername(userName);
  679. omsOrderChild.setDeleted(BigDecimal.ZERO);
  680. //if (businessTypeName != null && businessTypeName.equals("内部领用")) {
  681. // dlivDirnoSeq = omsTransOrderMapper.selectMax(i);
  682. // i ++;
  683. // omsOrderChild.setAlternateFields1(dlivDirnoSeq);
  684. // dlivDirnoSeqList.add(dlivDirnoSeq);
  685. // HashMap<String, Object> hashMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1());
  686. // HashMap<String, Object> dlivDirnoMap = new HashMap<>();
  687. // dlivDirnoMap.put("dlivDirno", amsRequirementChild.getAlternateFields1());
  688. // dlivDirnoMap.put("outweight", DataChange.dataToBigDecimal(hashMap.get("outweight")).add(DataChange.dataToBigDecimal(item.get("materialNumber"))));
  689. // amsTransRequirementMapper.updatedlivDirNo(dlivDirnoMap);
  690. //}
  691. entityDispose.disposeOrderChild(omsOrderChild);
  692. omsOrderChildren.add(omsOrderChild);
  693. omsTransOrders.add(omsTransOrder);
  694. //if(requirement != null&&!"2".equals(requirement.getAlternateFields15())){
  695. // String alternateFields16 = amsTransRequirement.getAlternateFields16();
  696. // if(alternateFields16 != null&&alternateFields16.length()>0){
  697. // requirementUpdate.setAlternateFields16(alternateFields16+"','"+omsTransOrder.getCarrierId().toString());
  698. // }else {
  699. // requirementUpdate.setAlternateFields16(omsTransOrder.getCarrierId().toString());
  700. // }
  701. // String alternateFields22 = amsTransRequirement.getAlternateFields22();
  702. // if(alternateFields22 != null&&alternateFields22.length()>0){
  703. // requirementUpdate.setAlternateFields22(alternateFields22+","+omsTransOrder.getDriverId().toString());
  704. // }else {
  705. // requirementUpdate.setAlternateFields22(omsTransOrder.getDriverId().toString());
  706. // }
  707. //}
  708. //新增各类实绩
  709. //List<Map<String, Object>> steps = omsOrderChildMapper.findLineDetails(new BigDecimal("149986"));
  710. TmsSignInResult tmsSignInResult = new TmsSignInResult();
  711. tmsSignInResult.setResultId(tmsSignInResultMapper.nextId());
  712. tmsSignInResult.setTransOrderId(omsTransOrder.getTransOrderId());
  713. tmsSignInResult.setSegmentSqe(new BigDecimal("1"));
  714. tmsSignInResult.setAlternateFields1("139987");
  715. tmsSignInResult.setInsertTime(new Date());
  716. tmsSignInResult.setInsertUsername(userName);
  717. tmsSignInResult.setDeleted(BigDecimal.ZERO);
  718. tmsSignInResultMapper.insertSelective(tmsSignInResult);
  719. //Map<String, Object> finalPlanDetails = planDetails;
  720. //try {
  721. // threadPool.execute(() -> {
  722. // //App消息推送
  723. // try {
  724. // //查询司机
  725. // HashMap<String, Object> sendMap = new HashMap<>();
  726. // sendMap.put("personnelId",omsTransOrder.getDriverId());
  727. // sendMap.put("title","运输订单下发通知");
  728. // //finalPlanDetails.get("")
  729. // String text = "单号为【"+omsTransOrder.getSerialNumber()+"】的运输订单已下发,请及时接收";
  730. // sendMap.put("content",text);
  731. // HashMap<String, Object> mapData = new HashMap<>();
  732. // mapData.put("text",text);
  733. // sendMap.put("data",mapData);
  734. // RESTfulResult resTfulResult = websocketFeign.pushUniMessage(sendMap);
  735. // }catch (Exception e){
  736. // log.error("消息推送失败:{}",e);
  737. // e.printStackTrace();
  738. // }
  739. // });
  740. //} catch (Exception e) {
  741. // e.printStackTrace();
  742. //}
  743. if("补型钢".equals(amsRequirementChild.getOperationName()) ) {
  744. Map<String, Object> comBaseInfoMap = new HashMap<>();
  745. comBaseInfoMap.put("basename","补-" + omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName());
  746. comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString());
  747. try {
  748. tmiFeign.addWmsCarNo(comBaseInfoMap);
  749. } catch (Exception e) {
  750. e.printStackTrace();
  751. throw new Exception("条码推送异常");
  752. }
  753. }
  754. if("上站型钢".equals(amsRequirementChild.getOperationName())) {
  755. Map<String, Object> comBaseInfoMap = new HashMap<>();
  756. comBaseInfoMap.put("basename",omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName());
  757. comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString());
  758. try {
  759. tmiFeign.addWmsCarNo(comBaseInfoMap);
  760. } catch (Exception e) {
  761. e.printStackTrace();
  762. throw new Exception("条码推送异常");
  763. }
  764. }
  765. }
  766. if(!omsTransOrders.isEmpty() && !omsOrderChildren.isEmpty()){
  767. omsTransOrderMapper.batchInsert(omsTransOrders);
  768. omsOrderChildMapper.batchInsert(omsOrderChildren);
  769. //去除重复数据
  770. Set<BigDecimal> set = new HashSet();
  771. for (OmsOrderChild omsOrderChild : omsOrderChildren) {
  772. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  773. set.add(amsPlanChild.getRequirementChildId());
  774. listAggCapacity(amsPlanChild.getPlanChildId());
  775. }
  776. }
  777. //消息推送
  778. return returnResult.toString().equals("")?"派车成功":returnResult.toString();
  779. }
  780. @Transactional(rollbackFor = Exception.class)
  781. public String batchDispatchInnerGp(Map<String, Object> map) throws Exception {
  782. //查询所派车辆所属承运商
  783. Map map1 = new HashMap<>();
  784. String userId = map.get("userId").toString();
  785. String userName = map.get("userName").toString();
  786. //派车时需满足所有运力类型才可以派车
  787. //车辆-司机
  788. List<Map<String, Object>> list = (ArrayList) map.get("list");
  789. BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId"));
  790. BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId"));
  791. //分录
  792. //判断是否传递计划分录
  793. Map<String, Object> planDetails = null;
  794. if(map.get("planDetails")!=null&&map.get("planDetails") instanceof Map){
  795. planDetails = (Map<String, Object>) map.get("planDetails");
  796. }else {
  797. planDetails = omsOrderChildMapper.findPlanChild2(map);
  798. }
  799. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  800. if (planDetails == null) {
  801. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  802. }
  803. //将计划状态变为已派车
  804. //omsTransOrderMapper.updatePlanStatus(planDetails);
  805. //准备待新增的实绩
  806. List<OmsTransOrder> omsTransOrders = new ArrayList<>();
  807. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  808. //修改需求车辆司机信
  809. StringBuilder returnResult = new StringBuilder();
  810. //判断当前运单和司机是否是同一计划
  811. String taskType = "正常作业";
  812. String remark = "内转钢坯";
  813. // 查询该需求,该时间,该车号,该司机有没有对应的单据,如果有则更新
  814. OmsTransOrder omsTransOrderUpdate = null;
  815. if(map.get("orderIssueTime") != null) {
  816. omsTransOrderUpdate = omsTransOrderMapper.selectUpdateOmsOrder(map);
  817. }
  818. if(omsTransOrderUpdate != null) {
  819. //新增运输订单
  820. omsTransOrderUpdate.setCapacityId(capacityId);
  821. omsTransOrderUpdate.setCurrentLineSeq(BigDecimal.ZERO);
  822. if(map.get("orderIssueTime") != null) {
  823. omsTransOrderUpdate.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime")));
  824. }else{
  825. omsTransOrderUpdate.setIssueTime(new Date());
  826. }
  827. omsTransOrderUpdate.setInsertTime(new Date());
  828. omsTransOrderUpdate.setDeleted(new BigDecimal(2));
  829. omsTransOrderUpdate.setInsertUsername(userName);
  830. omsTransOrderUpdate.setDriverId(driverId);
  831. omsTransOrderUpdate.setInsertUpdateRemark(remark);
  832. omsTransOrderUpdate.setAlternateFields1(taskType);
  833. // 新增运输订单子表
  834. omsTransOrderUpdate.setOrderType(new BigDecimal(129988));//设置运单类型为业务类型
  835. omsTransOrderUpdate.setAlternateFields32(map.get("icCardNo") == null ? null : map.get("icCardNo").toString());
  836. //根据
  837. Map<String, Object> objectObjectHashMap = new HashMap<>();
  838. objectObjectHashMap.put("transOrderId",omsTransOrderUpdate.getTransOrderId());
  839. objectObjectHashMap.put("deleted",0);
  840. List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(objectObjectHashMap);
  841. omsOrderChildList.get(0).setTransOrderId(omsTransOrderUpdate.getTransOrderId());
  842. omsOrderChildList.get(0).setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  843. omsOrderChildList.get(0).setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId")));
  844. omsOrderChildList.get(0).setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
  845. omsOrderChildList.get(0).setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight")));
  846. omsOrderChildList.get(0).setInsertTime(new Date());
  847. omsOrderChildList.get(0).setInsertUsername(userName);
  848. omsOrderChildList.get(0).setDeleted(BigDecimal.ZERO);
  849. omsOrderChildList.get(0).setAlternateFields18(map.get("luNo") == null ? null : map.get("luNo").toString());
  850. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrderUpdate);
  851. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChildList.get(0));
  852. }else{
  853. //新增运输订单
  854. OmsTransOrder omsTransOrder = new OmsTransOrder();
  855. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  856. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  857. omsTransOrder.getTransOrderId().intValue()));
  858. omsTransOrder.setCapacityId(capacityId);
  859. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  860. if(map.get("orderIssueTime") != null) {
  861. omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime")));
  862. }else{
  863. omsTransOrder.setIssueTime(new Date());
  864. }
  865. omsTransOrder.setInsertTime(new Date());
  866. omsTransOrder.setDeleted(new BigDecimal(2));
  867. omsTransOrder.setInsertUsername(userName);
  868. omsTransOrder.setDriverId(driverId);
  869. omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") == null ? null : planDetails.get("rootCompanyId").toString());
  870. omsTransOrder.setInsertUpdateRemark(remark);
  871. omsTransOrder.setAlternateFields1(taskType);
  872. // 新增运输订单子表
  873. omsTransOrder.setOrderType(new BigDecimal(129988));//设置运单类型为业务类型
  874. omsTransOrder.setAlternateFields32(map.get("icCardNo") == null ? null : map.get("icCardNo").toString());
  875. entityDispose.disposeOmsTransOrder(omsTransOrder);
  876. OmsOrderChild omsOrderChild = new OmsOrderChild();
  877. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  878. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  879. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  880. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId")));
  881. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
  882. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight")));
  883. omsOrderChild.setInsertTime(new Date());
  884. omsOrderChild.setInsertUsername(userName);
  885. omsOrderChild.setDeleted(BigDecimal.ZERO);
  886. omsOrderChild.setAlternateFields18(map.get("luNo") == null ? null : map.get("luNo").toString());
  887. entityDispose.disposeOrderChild(omsOrderChild);
  888. omsTransOrderMapper.insertSelective(omsTransOrder);
  889. omsOrderChildMapper.insertSelective(omsOrderChild);
  890. }
  891. //消息推送
  892. return returnResult.toString().equals("")?"派车成功":returnResult.toString();
  893. }
  894. @Transactional(rollbackFor = Exception.class)
  895. public String updateTransOrder(Map<String, Object> map) throws Exception {
  896. String userId = map.get("userId").toString();
  897. String userName = map.get("userName").toString();
  898. BigDecimal transOrderId = DataChange.getBigDecimal(map.get("transOrderId").toString());
  899. BigDecimal transOrderChildId = DataChange.getBigDecimal(map.get("transOrderChildId").toString());
  900. BigDecimal capacityId = DataChange.getBigDecimal(map.get("capacityId"));
  901. BigDecimal lineId = DataChange.getBigDecimal(map.get("lineId"));
  902. BigDecimal driverId = DataChange.getBigDecimal(map.get("driverId"));
  903. BigDecimal driverId2 = DataChange.getBigDecimal(map.get("driverId2"));
  904. BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
  905. String storageattrId = map.get("storageattrId") == null ? null : map.get("storageattrId").toString();
  906. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  907. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId);
  908. if(map.containsKey("scFlag")) {
  909. omsOrderChild.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
  910. omsOrderChild.setActualWeight(DataChange.dataToBigDecimal(map.get("actualWeight")));
  911. if(omsOrderChild.getActualWeight().compareTo(BigDecimal.ZERO) <= 0) {
  912. throw new Exception("吨位小于等于0");
  913. }
  914. omsOrderChild.setInsertUpdateRemark("计吨备注:" + (map.get("remark") == null ? "无" : map.get("remark").toString()));
  915. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  916. if(omsOrderChild.getActualDuration() != null) {
  917. omsTransOrderService.updateTimeOrderStatus(omsTransOrder.getTransOrderId(),"计时且计吨结束",userName);
  918. }else{
  919. omsTransOrderService.updateTimeOrderStatus(omsTransOrder.getTransOrderId(),"计吨结束",userName);
  920. }
  921. return "操作成功";
  922. }
  923. if(map.containsKey("pauseOrderStatus")) {
  924. omsTransOrder.setAlternateFields33(map.get("pauseOrderStatus").toString());
  925. omsTransOrder.setAlternateFields34(userName + ":操作暂停状态");
  926. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  927. omsTransOrderMapper.updateOtherPauseStatus(omsTransOrder.getTransOrderId(),map.get("pauseOrderStatus").toString());
  928. return "吊车暂停:操作成功";
  929. }
  930. if("同意".equals(map.get("batchMakeSure"))) {
  931. List<Map<String,Object>> mapList = (List<Map<String,Object>>) map.get("mapList");
  932. List<OmsTransOrder> omsTransOrderList = new ArrayList<>();
  933. for(Map<String,Object> stringObjectMap : mapList) {
  934. BigDecimal transOrderIdGp = DataChange.getBigDecimal(stringObjectMap.get("transOrderId").toString());
  935. OmsTransOrder omsTransOrderGp = omsTransOrderMapper.selectByPrimaryKey(transOrderIdGp);
  936. omsTransOrderGp.setAlternateFields42("已确认");
  937. omsTransOrderList.add(omsTransOrderGp);
  938. }
  939. omsTransOrderMapper.batchUpdate(omsTransOrderList);
  940. return "钢坯内转确认:操作成功!";
  941. }
  942. if (map.containsKey("abnormalFlag")) {
  943. //判断是否需要异常处理
  944. omsTransOrder.setAlternateFields29(map.get("abnormalFlag").toString());
  945. omsTransOrder.setAlternateFields30(userName + ":操作允许异常");
  946. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  947. return "允许异常操作:操作成功";
  948. }
  949. if("拒绝".equals(map.get("approveStatus")) && "生产".equals(omsTransOrder.getBusinessScene())) {
  950. omsTransOrder.setAlternateFields36(map.get("approveStatus").toString());
  951. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  952. return "允许复报:操作成功";
  953. }
  954. if("生产需求异常处理".equals(map.get("requirementAbnormalDispose")) && "生产".equals(omsTransOrder.getBusinessScene())) {
  955. //获取业务类型
  956. omsTransOrder.setOrderType(DataChange.dataToBigDecimal(map.get("orderType")));
  957. omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("issueTime")));
  958. omsTransOrder.setAlternateFields1(map.get("alternateFields1") == null ? null : map.get("alternateFields1").toString());
  959. omsOrderChild.setRequirementStartTime(DataChange.dataToDate(map.get("requirementStartTime")));
  960. omsOrderChild.setRequirementEndTime(DataChange.dataToDate(map.get("requirementEndTime")));
  961. entityDispose.disposeOmsTransOrder(omsTransOrder);
  962. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  963. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild);
  964. return "生产需求异常处理:操作成功";
  965. }
  966. omsOrderChild.setAlternateFields2(storageattrId);
  967. if(tmsEnfactoryResultMapper.isEnfactory(omsTransOrder.getTransOrderId()) > 0){
  968. throw new Exception("已进厂,不允许再修改!");
  969. }
  970. //查询分录
  971. Map<String,Object> planChild = new HashMap<>();
  972. planChild.put("planChildId",omsOrderChild.getPlanChildId());
  973. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild(planChild);
  974. if(materialNumber.compareTo(omsOrderChild.getMaterialNumber()) != 0){
  975. if(materialNumber.compareTo(BigDecimal.ZERO) <= 0){
  976. throw new Exception("物资数量不能小于0!");
  977. }
  978. BigDecimal numberDiff = materialNumber.subtract(omsOrderChild.getMaterialNumber());
  979. //校验分录余额
  980. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  981. switch (controlMode) {
  982. case 0:
  983. //不控制
  984. break;
  985. case 1:
  986. //1:数量控制
  987. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  988. if (numberDiff.compareTo(numberLeft) > 0) {
  989. throw new Exception("数量超出需求限制!");
  990. }
  991. break;
  992. case 2:
  993. //2:金额控制
  994. break;
  995. case 3:
  996. //3:车数控制
  997. break;
  998. }
  999. //修改运单数量
  1000. omsOrderChild.setMaterialNumber(materialNumber);
  1001. }
  1002. BigDecimal deleted = omsTransOrder.getDeleted();
  1003. if (omsTransOrder.getOrderType().compareTo(new BigDecimal(129988)) != 0 && deleted.compareTo(new BigDecimal(2)) == 0
  1004. || deleted.compareTo(new BigDecimal(1)) == 0
  1005. || deleted.compareTo(new BigDecimal(7)) == 0
  1006. || deleted.compareTo(new BigDecimal(6)) == 0) {
  1007. throw new Exception("已完成/删除/关闭/拒绝的运单不允许修改!");
  1008. }
  1009. if(deleted.compareTo(new BigDecimal(2)) == 0) {
  1010. omsOrderChild.setReceiptTime(new Date());
  1011. }
  1012. if(deleted.compareTo(new BigDecimal(20)) == 0) {
  1013. omsTransOrder.setDeleted(new BigDecimal(2));
  1014. }
  1015. omsTransOrder.setCapacityId(capacityId);
  1016. omsTransOrder.setDriverId(driverId);
  1017. omsTransOrder.setDriverId2(driverId2);
  1018. omsTransOrder.setAlternateFields11(map.get("alternateFields11") == null ? null : map.get("alternateFields11").toString());
  1019. omsTransOrder.setAlternateFields12(map.get("alternateFields12") == null ? null : map.get("alternateFields12").toString());
  1020. omsTransOrder.setAlternateFields13(map.get("alternateFields13") == null ? null : map.get("alternateFields13").toString());
  1021. omsTransOrder.setAlternateFields14(map.get("alternateFields14") == null ? null : map.get("alternateFields14").toString());
  1022. omsTransOrder.setAlternateFields15(map.get("alternateFields15") == null ? null : map.get("alternateFields15").toString());
  1023. omsTransOrder.setAlternateFields42("未确认");
  1024. if (lineId != null && lineId.compareTo(omsTransOrder.getLineId()) != 0) {
  1025. //换线路
  1026. Map<String, Object> searchMap = new HashMap<>();
  1027. searchMap.put("transOrderId", transOrderId);
  1028. searchMap.put("deleted", 0);
  1029. //查询需求中的装货点卸货点
  1030. List<Map<String, Object>> loadUnloadPoints = omsOrderChildMapper.getRequireLoads(omsOrderChild.getPlanChildId());
  1031. int loadIndex = 0,unloadIndex = 0;
  1032. //查询原运单所有实绩
  1033. List<TmsReplaceFrontResult> tmsReplaceFrontResultsOld = tmsReplaceFrontResultMapper.selectByParameters(searchMap);
  1034. List<TmsSignInResult> tmsSignInResultsOld = tmsSignInResultMapper.selectByParameters(searchMap);
  1035. List<TmsEnfactoryResult> tmsEnfactoryResultsOld = tmsEnfactoryResultMapper.selectByParameters(searchMap);
  1036. List<TmsOutfactoryResult> tmsOutfactoryResultsOld = tmsOutfactoryResultMapper.selectByParameters(searchMap);
  1037. List<TmsLoadResult> tmsLoadResultsOld = tmsLoadResultMapper.selectByParameters(searchMap);
  1038. List<TmsUnloadResult> tmsUnloadResultsOld = tmsUnloadResultMapper.selectByParameters(searchMap);
  1039. List<TmsWeightResult> tmsWeightResultsOld = tmsWeightResultMapper.selectByParameters(searchMap);
  1040. List<TmsQualityResult> tmsQualityResultsOld = tmsQualityResultMapper.selectByParameters(searchMap);
  1041. List<TmsArrivalResult> tmsArrivalResultsOld = tmsArrivalResultMapper.selectByParameters(searchMap);
  1042. List<TmsReceiptResult> tmsReceiptResultsOld = tmsReceiptResultMapper.selectByParameters(searchMap);
  1043. //创建新实绩
  1044. List<TmsReplaceFrontResult> tmsReplaceFrontResults = new ArrayList<>();
  1045. List<TmsSignInResult> tmsSignInResults = new ArrayList<>();
  1046. List<TmsEnfactoryResult> tmsEnfactoryResults = new ArrayList<>();
  1047. List<TmsOutfactoryResult> tmsOutfactoryResults = new ArrayList<>();
  1048. List<TmsLoadResult> tmsLoadResults = new ArrayList<>();
  1049. List<TmsUnloadResult> tmsUnloadResults = new ArrayList<>();
  1050. List<TmsWeightResult> tmsWeightResults = new ArrayList<>();
  1051. List<TmsQualityResult> tmsQualityResults = new ArrayList<>();
  1052. List<TmsArrivalResult> tmsArrivalResults = new ArrayList<>();
  1053. List<TmsReceiptResult> tmsReceiptResults = new ArrayList<>();
  1054. //查询线路步骤
  1055. List<Map<String, Object>> steps = omsOrderChildMapper.findLineDetails(lineId);
  1056. if (steps.size() <= 0) {
  1057. throw new Exception("线路步骤为空!");
  1058. }
  1059. for (Map<String, Object> step : steps) {
  1060. switch (step.get("stepName").toString()) {
  1061. case "换车头":
  1062. TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult();
  1063. tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId());
  1064. tmsReplaceFrontResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1065. tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1066. tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString());
  1067. tmsReplaceFrontResult.setInsertTime(new Date());
  1068. tmsReplaceFrontResult.setInsertUsername(userName);
  1069. tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO);
  1070. tmsReplaceFrontResults.add(tmsReplaceFrontResult);
  1071. break;
  1072. case "签到":
  1073. TmsSignInResult tmsSignInResult = new TmsSignInResult();
  1074. tmsSignInResult.setResultId(tmsSignInResultMapper.nextId());
  1075. tmsSignInResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1076. tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1077. tmsSignInResult.setAlternateFields1(step.get("stepId").toString());
  1078. tmsSignInResult.setInsertTime(new Date());
  1079. tmsSignInResult.setInsertUsername(userName);
  1080. tmsSignInResult.setDeleted(BigDecimal.ZERO);
  1081. tmsSignInResults.add(tmsSignInResult);
  1082. break;
  1083. case "进厂":
  1084. TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult();
  1085. tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId());
  1086. tmsEnfactoryResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1087. tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1088. tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString());
  1089. tmsEnfactoryResult.setInsertTime(new Date());
  1090. tmsEnfactoryResult.setInsertUsername(userName);
  1091. tmsEnfactoryResult.setDeleted(BigDecimal.ZERO);
  1092. tmsEnfactoryResults.add(tmsEnfactoryResult);
  1093. break;
  1094. case "出厂":
  1095. TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult();
  1096. tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId());
  1097. tmsOutfactoryResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1098. tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1099. tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString());
  1100. tmsOutfactoryResult.setInsertTime(new Date());
  1101. tmsOutfactoryResult.setInsertUsername(userName);
  1102. tmsOutfactoryResult.setDeleted(BigDecimal.ZERO);
  1103. tmsOutfactoryResults.add(tmsOutfactoryResult);
  1104. break;
  1105. case "计毛":
  1106. case "计皮":
  1107. setWeightResult(tmsWeightResults, step,
  1108. omsTransOrder.getTransOrderId(),
  1109. userName);
  1110. break;
  1111. case "装货":
  1112. TmsLoadResult tmsLoadResult = new TmsLoadResult();
  1113. tmsLoadResult.setResultId(tmsLoadResultMapper.nextId());
  1114. tmsLoadResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1115. tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1116. try{
  1117. tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId")));
  1118. }catch (Exception e){
  1119. throw new Exception("运输路线装货次数和运单不匹配");
  1120. }
  1121. tmsLoadResult.setAlternateFields1(step.get("stepId").toString());
  1122. tmsLoadResult.setInsertTime(new Date());
  1123. tmsLoadResult.setInsertUsername(userName);
  1124. tmsLoadResult.setDeleted(BigDecimal.ZERO);
  1125. tmsLoadResults.add(tmsLoadResult);
  1126. break;
  1127. case "卸货":
  1128. TmsUnloadResult tmsUnloadResult = new TmsUnloadResult();
  1129. tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId());
  1130. tmsUnloadResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1131. tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1132. try{
  1133. tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId")));
  1134. }catch (Exception e){
  1135. throw new Exception("运输路线卸货次数和运单不匹配");
  1136. }
  1137. tmsUnloadResult.setAlternateFields1(step.get("stepId").toString());
  1138. tmsUnloadResult.setInsertTime(new Date());
  1139. tmsUnloadResult.setInsertUsername(userName);
  1140. tmsUnloadResult.setDeleted(BigDecimal.ZERO);
  1141. tmsUnloadResults.add(tmsUnloadResult);
  1142. break;
  1143. case "采样":
  1144. TmsQualityResult tmsQualityResult = new TmsQualityResult();
  1145. tmsQualityResult.setResultId(tmsQualityResultMapper.nextId());
  1146. tmsQualityResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1147. tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1148. tmsQualityResult.setAlternateFields1(step.get("stepId").toString());
  1149. tmsQualityResult.setInsertTime(new Date());
  1150. tmsQualityResult.setInsertUsername(userName);
  1151. tmsQualityResult.setDeleted(BigDecimal.ZERO);
  1152. tmsQualityResults.add(tmsQualityResult);
  1153. break;
  1154. case "抵达":
  1155. TmsArrivalResult tmsArrivalResult = new TmsArrivalResult();
  1156. tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId());
  1157. tmsArrivalResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1158. tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1159. tmsArrivalResult.setAlternateFields1(step.get("stepId").toString());
  1160. tmsArrivalResult.setInsertTime(new Date());
  1161. tmsArrivalResult.setInsertUsername(userName);
  1162. tmsArrivalResult.setDeleted(BigDecimal.ZERO);
  1163. tmsArrivalResults.add(tmsArrivalResult);
  1164. break;
  1165. case "签收":
  1166. TmsReceiptResult tmsReceiptResult = new TmsReceiptResult();
  1167. tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId());
  1168. tmsReceiptResult.setTransOrderId(omsTransOrder.getTransOrderId());
  1169. tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1170. tmsReceiptResult.setAlternateFields1(step.get("stepId").toString());
  1171. tmsReceiptResult.setInsertTime(new Date());
  1172. tmsReceiptResult.setInsertUsername(userName);
  1173. tmsReceiptResult.setDeleted(BigDecimal.ZERO);
  1174. tmsReceiptResults.add(tmsReceiptResult);
  1175. break;
  1176. default:
  1177. throw new Exception("派单失败!无法解析的运输步骤:" + step.get("stepName"));
  1178. }
  1179. }
  1180. BigDecimal maxSeq = new BigDecimal(0);
  1181. //遍历旧实绩边迁移边删除
  1182. if (tmsReplaceFrontResultsOld.size() > 0) {
  1183. for (int i = 0; i < tmsReplaceFrontResultsOld.size(); i++) {
  1184. TmsReplaceFrontResult itemOld = tmsReplaceFrontResultsOld.get(i);
  1185. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1186. if (itemOld.getReplaceTime() != null) {
  1187. TmsReplaceFrontResult itemNew = tmsReplaceFrontResults.get(i);
  1188. BigDecimal resultId = itemNew.getResultId();
  1189. BigDecimal seq = itemNew.getSegmentSqe();
  1190. String stepId = itemNew.getAlternateFields1();
  1191. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsReplaceFrontResult.class);
  1192. itemNew.setResultId(resultId);
  1193. itemNew.setSegmentSqe(seq);
  1194. itemNew.setAlternateFields1(stepId);
  1195. tmsReplaceFrontResults.set(i, itemNew);//丢失引用,需要重新加入List
  1196. if (seq.compareTo(maxSeq) > 0) {
  1197. //记录当前有效实绩最大的路段顺序号
  1198. maxSeq = seq;
  1199. }
  1200. }
  1201. //删除
  1202. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1203. itemOld.setDeleted(BigDecimal.ONE);
  1204. itemOld.setUpdateUsername(userName);
  1205. itemOld.setUpdateTime(new Date());
  1206. }
  1207. tmsReplaceFrontResultMapper.batchUpdate(tmsReplaceFrontResultsOld);
  1208. }
  1209. if (tmsSignInResultsOld.size() > 0) {
  1210. for (int i = 0; i < tmsSignInResultsOld.size(); i++) {
  1211. TmsSignInResult itemOld = tmsSignInResultsOld.get(i);
  1212. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1213. if (itemOld.getSignInTime() != null) {
  1214. TmsSignInResult itemNew = tmsSignInResults.get(i);
  1215. BigDecimal resultId = itemNew.getResultId();
  1216. BigDecimal seq = itemNew.getSegmentSqe();
  1217. String stepId = itemNew.getAlternateFields1();
  1218. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsSignInResult.class);
  1219. itemNew.setResultId(resultId);
  1220. itemNew.setSegmentSqe(seq);
  1221. itemNew.setAlternateFields1(stepId);
  1222. tmsSignInResults.set(i, itemNew);
  1223. if (seq.compareTo(maxSeq) > 0) {
  1224. maxSeq = seq;
  1225. }
  1226. }
  1227. //删除
  1228. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1229. itemOld.setDeleted(BigDecimal.ONE);
  1230. itemOld.setUpdateUsername(userName);
  1231. itemOld.setUpdateTime(new Date());
  1232. }
  1233. tmsSignInResultMapper.batchUpdate(tmsSignInResultsOld);
  1234. }
  1235. if (tmsEnfactoryResultsOld.size() > 0) {
  1236. for (int i = 0; i < tmsEnfactoryResultsOld.size(); i++) {
  1237. TmsEnfactoryResult itemOld = tmsEnfactoryResultsOld.get(i);
  1238. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1239. if (itemOld.getEntryGateTime() != null) {
  1240. TmsEnfactoryResult itemNew = tmsEnfactoryResults.get(i);
  1241. BigDecimal resultId = itemNew.getResultId();
  1242. BigDecimal seq = itemNew.getSegmentSqe();
  1243. String stepId = itemNew.getAlternateFields1();
  1244. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsEnfactoryResult.class);
  1245. itemNew.setResultId(resultId);
  1246. itemNew.setSegmentSqe(seq);
  1247. itemNew.setAlternateFields1(stepId);
  1248. tmsEnfactoryResults.set(i, itemNew);
  1249. if (seq.compareTo(maxSeq) > 0) {
  1250. maxSeq = seq;
  1251. }
  1252. }
  1253. //删除
  1254. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1255. itemOld.setDeleted(BigDecimal.ONE);
  1256. itemOld.setUpdateUsername(userName);
  1257. itemOld.setUpdateTime(new Date());
  1258. }
  1259. tmsEnfactoryResultMapper.batchUpdate(tmsEnfactoryResultsOld);
  1260. }
  1261. if (tmsOutfactoryResultsOld.size() > 0) {
  1262. for (int i = 0; i < tmsOutfactoryResultsOld.size(); i++) {
  1263. TmsOutfactoryResult itemOld = tmsOutfactoryResultsOld.get(i);
  1264. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1265. if (itemOld.getOutGateTime() != null) {
  1266. TmsOutfactoryResult itemNew = tmsOutfactoryResults.get(i);
  1267. BigDecimal resultId = itemNew.getResultId();
  1268. BigDecimal seq = itemNew.getSegmentSqe();
  1269. String stepId = itemNew.getAlternateFields1();
  1270. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsOutfactoryResult.class);
  1271. itemNew.setResultId(resultId);
  1272. itemNew.setSegmentSqe(seq);
  1273. itemNew.setAlternateFields1(stepId);
  1274. tmsOutfactoryResults.set(i, itemNew);
  1275. if (seq.compareTo(maxSeq) > 0) {
  1276. maxSeq = seq;
  1277. }
  1278. }
  1279. //删除
  1280. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1281. itemOld.setDeleted(BigDecimal.ONE);
  1282. itemOld.setUpdateUsername(userName);
  1283. itemOld.setUpdateTime(new Date());
  1284. }
  1285. tmsOutfactoryResultMapper.batchUpdate(tmsOutfactoryResultsOld);
  1286. }
  1287. if (tmsWeightResultsOld.size() > 0) {
  1288. for (int i = 0; i < tmsWeightResultsOld.size(); i++) {
  1289. TmsWeightResult itemOld = tmsWeightResultsOld.get(i);
  1290. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1291. if (itemOld.getGrossWeightTime() != null || itemOld.getTareWeightTime() != null) {
  1292. TmsWeightResult itemNew = tmsWeightResults.get(i);
  1293. BigDecimal resultId = itemNew.getResultId();
  1294. BigDecimal tareSeq = itemNew.getTareSegmentSqe();
  1295. BigDecimal grossSeq = itemNew.getGrossSegmentSqe();
  1296. String stepId1 = itemNew.getAlternateFields1();
  1297. String stepId2 = itemNew.getAlternateFields2();
  1298. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsWeightResult.class);
  1299. itemNew.setResultId(resultId);
  1300. itemNew.setTareSegmentSqe(tareSeq);
  1301. itemNew.setGrossSegmentSqe(grossSeq);
  1302. itemNew.setAlternateFields1(stepId1);
  1303. itemNew.setAlternateFields1(stepId2);
  1304. tmsWeightResults.set(i, itemNew);
  1305. if (itemOld.getTareWeightTime() != null && tareSeq.compareTo(maxSeq) > 0) {
  1306. maxSeq = tareSeq;
  1307. }
  1308. if (itemOld.getGrossWeightTime() != null && grossSeq.compareTo(maxSeq) > 0) {
  1309. maxSeq = grossSeq;
  1310. }
  1311. }
  1312. //删除
  1313. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1314. itemOld.setDeleted(BigDecimal.ONE);
  1315. itemOld.setUpdateUsername(userName);
  1316. itemOld.setUpdateTime(new Date());
  1317. }
  1318. tmsWeightResultMapper.batchUpdate(tmsWeightResultsOld);
  1319. }
  1320. if (tmsLoadResultsOld.size() > 0) {
  1321. for (int i = 0; i < tmsLoadResultsOld.size(); i++) {
  1322. TmsLoadResult itemOld = tmsLoadResultsOld.get(i);
  1323. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1324. if (itemOld.getLoadStartTime() != null) {
  1325. TmsLoadResult itemNew = tmsLoadResults.get(i);
  1326. BigDecimal resultId = itemNew.getResultId();
  1327. BigDecimal seq = itemNew.getSegmentSqe();
  1328. String stepId = itemNew.getAlternateFields1();
  1329. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsLoadResult.class);
  1330. itemNew.setResultId(resultId);
  1331. itemNew.setSegmentSqe(seq);
  1332. itemNew.setAlternateFields1(stepId);
  1333. tmsLoadResults.set(i, itemNew);
  1334. if (seq.compareTo(maxSeq) > 0) {
  1335. //记录当前有效实绩最大的路段顺序号
  1336. maxSeq = seq;
  1337. }
  1338. }
  1339. //删除
  1340. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1341. itemOld.setDeleted(BigDecimal.ONE);
  1342. itemOld.setUpdateUsername(userName);
  1343. itemOld.setUpdateTime(new Date());
  1344. }
  1345. tmsLoadResultMapper.batchUpdate(tmsLoadResultsOld);
  1346. }
  1347. if (tmsUnloadResultsOld.size() > 0) {
  1348. for (int i = 0; i < tmsUnloadResultsOld.size(); i++) {
  1349. TmsUnloadResult itemOld = tmsUnloadResultsOld.get(i);
  1350. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1351. if (itemOld.getUnloadEndTime() != null) {
  1352. TmsUnloadResult itemNew = tmsUnloadResults.get(i);
  1353. BigDecimal resultId = itemNew.getResultId();
  1354. BigDecimal seq = itemNew.getSegmentSqe();
  1355. String stepId = itemNew.getAlternateFields1();
  1356. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsUnloadResult.class);
  1357. itemNew.setResultId(resultId);
  1358. itemNew.setSegmentSqe(seq);
  1359. itemNew.setAlternateFields1(stepId);
  1360. tmsUnloadResults.set(i, itemNew);
  1361. if (seq.compareTo(maxSeq) > 0) {
  1362. //记录当前有效实绩最大的路段顺序号
  1363. maxSeq = seq;
  1364. }
  1365. }
  1366. //删除
  1367. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1368. itemOld.setDeleted(BigDecimal.ONE);
  1369. itemOld.setUpdateUsername(userName);
  1370. itemOld.setUpdateTime(new Date());
  1371. }
  1372. tmsUnloadResultMapper.batchUpdate(tmsUnloadResultsOld);
  1373. }
  1374. if (tmsQualityResultsOld.size() > 0) {
  1375. for (int i = 0; i < tmsQualityResultsOld.size(); i++) {
  1376. TmsQualityResult itemOld = tmsQualityResultsOld.get(i);
  1377. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1378. if (itemOld.getSamplingTime() != null || itemOld.getAssayTime() != null) {
  1379. TmsQualityResult itemNew = tmsQualityResults.get(i);
  1380. BigDecimal resultId = itemNew.getResultId();
  1381. BigDecimal seq = itemNew.getSegmentSqe();
  1382. String stepId = itemNew.getAlternateFields1();
  1383. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsQualityResult.class);
  1384. itemNew.setResultId(resultId);
  1385. itemNew.setSegmentSqe(seq);
  1386. itemNew.setAlternateFields1(stepId);
  1387. tmsQualityResults.set(i, itemNew);
  1388. if (seq.compareTo(maxSeq) > 0) {
  1389. //记录当前有效实绩最大的路段顺序号
  1390. maxSeq = seq;
  1391. }
  1392. }
  1393. //删除
  1394. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1395. itemOld.setDeleted(BigDecimal.ONE);
  1396. itemOld.setUpdateUsername(userName);
  1397. itemOld.setUpdateTime(new Date());
  1398. }
  1399. tmsQualityResultMapper.batchUpdate(tmsQualityResultsOld);
  1400. }
  1401. if (tmsArrivalResultsOld.size() > 0) {
  1402. for (int i = 0; i < tmsArrivalResultsOld.size(); i++) {
  1403. TmsArrivalResult itemOld = tmsArrivalResultsOld.get(i);
  1404. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1405. if (itemOld.getArrivalTime() != null) {
  1406. TmsArrivalResult itemNew = tmsArrivalResults.get(i);
  1407. BigDecimal resultId = itemNew.getResultId();
  1408. BigDecimal seq = itemNew.getSegmentSqe();
  1409. String stepId = itemNew.getAlternateFields1();
  1410. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsArrivalResult.class);
  1411. itemNew.setResultId(resultId);
  1412. itemNew.setSegmentSqe(seq);
  1413. itemNew.setAlternateFields1(stepId);
  1414. tmsArrivalResults.set(i, itemNew);
  1415. if (seq.compareTo(maxSeq) > 0) {
  1416. //记录当前有效实绩最大的路段顺序号
  1417. maxSeq = seq;
  1418. }
  1419. }
  1420. //删除
  1421. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1422. itemOld.setDeleted(BigDecimal.ONE);
  1423. itemOld.setUpdateUsername(userName);
  1424. itemOld.setUpdateTime(new Date());
  1425. }
  1426. tmsArrivalResultMapper.batchUpdate(tmsArrivalResultsOld);
  1427. }
  1428. if (tmsReceiptResultsOld.size() > 0) {
  1429. for (int i = 0; i < tmsReceiptResultsOld.size(); i++) {
  1430. TmsReceiptResult itemOld = tmsReceiptResultsOld.get(i);
  1431. //迁移,如果新路线不能迁移,则数组越界,抛出异常
  1432. if (itemOld.getReceiptTime() != null) {
  1433. TmsReceiptResult itemNew = tmsReceiptResults.get(i);
  1434. BigDecimal resultId = itemNew.getResultId();
  1435. BigDecimal seq = itemNew.getSegmentSqe();
  1436. String stepId = itemNew.getAlternateFields1();
  1437. itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsReceiptResult.class);
  1438. itemNew.setResultId(resultId);
  1439. itemNew.setSegmentSqe(seq);
  1440. itemNew.setAlternateFields1(stepId);
  1441. tmsReceiptResults.set(i, itemNew);
  1442. if (seq.compareTo(maxSeq) > 0) {
  1443. //记录当前有效实绩最大的路段顺序号
  1444. maxSeq = seq;
  1445. }
  1446. }
  1447. //删除
  1448. itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId()));
  1449. itemOld.setDeleted(BigDecimal.ONE);
  1450. itemOld.setUpdateUsername(userName);
  1451. itemOld.setUpdateTime(new Date());
  1452. }
  1453. tmsReceiptResultMapper.batchUpdate(tmsReceiptResultsOld);
  1454. }
  1455. //新增各类新实绩(校验是否中空,中空则不允许迁移)
  1456. if (tmsReplaceFrontResults.size() > 0) {
  1457. for (TmsReplaceFrontResult item : tmsReplaceFrontResults) {
  1458. if (item.getReplaceTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1459. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1460. }
  1461. }
  1462. tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults);
  1463. }
  1464. if (tmsSignInResults.size() > 0) {
  1465. for (TmsSignInResult item : tmsSignInResults) {
  1466. if (item.getSignInTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1467. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1468. }
  1469. }
  1470. tmsSignInResultMapper.batchInsert(tmsSignInResults);
  1471. }
  1472. if (tmsEnfactoryResults.size() > 0) {
  1473. for (TmsEnfactoryResult item : tmsEnfactoryResults) {
  1474. if (item.getEntryGateTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1475. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1476. }
  1477. }
  1478. tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults);
  1479. }
  1480. if (tmsOutfactoryResults.size() > 0) {
  1481. for (TmsOutfactoryResult item : tmsOutfactoryResults) {
  1482. if (item.getOutGateTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1483. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1484. }
  1485. }
  1486. tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults);
  1487. }
  1488. if (tmsWeightResults.size() > 0) {
  1489. for (TmsWeightResult item : tmsWeightResults) {
  1490. if (
  1491. (item.getTareWeightTime() == null && item.getTareSegmentSqe().compareTo(maxSeq) < 0)
  1492. || (item.getGrossWeightTime() == null && item.getGrossSegmentSqe().compareTo(maxSeq) < 0)
  1493. ) {
  1494. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1495. }
  1496. }
  1497. tmsWeightResultMapper.batchInsert(tmsWeightResults);
  1498. }
  1499. if (tmsLoadResults.size() > 0) {
  1500. for (TmsLoadResult item : tmsLoadResults) {
  1501. if (item.getLoadStartTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1502. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1503. }
  1504. }
  1505. tmsLoadResultMapper.batchInsert(tmsLoadResults);
  1506. }
  1507. if (tmsUnloadResults.size() > 0) {
  1508. for (TmsUnloadResult item : tmsUnloadResults) {
  1509. if (item.getUnloadEndTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1510. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1511. }
  1512. }
  1513. tmsUnloadResultMapper.batchInsert(tmsUnloadResults);
  1514. }
  1515. if (tmsQualityResults.size() > 0) {
  1516. for (TmsQualityResult item : tmsQualityResults) {
  1517. if (item.getSamplingTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1518. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1519. }
  1520. }
  1521. tmsQualityResultMapper.batchInsert(tmsQualityResults);
  1522. }
  1523. if (tmsArrivalResults.size() > 0) {
  1524. for (TmsArrivalResult item : tmsArrivalResults) {
  1525. if (item.getArrivalTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1526. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1527. }
  1528. }
  1529. tmsArrivalResultMapper.batchInsert(tmsArrivalResults);
  1530. }
  1531. if (tmsReceiptResults.size() > 0) {
  1532. for (TmsReceiptResult item : tmsReceiptResults) {
  1533. if (item.getReceiptTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) {
  1534. throw new Exception("迁移后运输执行丢失顺序,不允许迁移!");
  1535. }
  1536. }
  1537. tmsReceiptResultMapper.batchInsert(tmsReceiptResults);
  1538. }
  1539. omsTransOrder.setLineId(lineId);
  1540. omsTransOrder.setCurrentLineSeq(maxSeq);
  1541. }
  1542. entityDispose.disposeOmsTransOrder(omsTransOrder);
  1543. entityDispose.disposeOrderChild(omsOrderChild);
  1544. omsTransOrder.setUpdateTime(new Date());
  1545. omsTransOrder.setUpdateUsername(userName);
  1546. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  1547. omsOrderChild.setUpdateTime(new Date());
  1548. omsOrderChild.setUpdateUsername(userName);
  1549. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild);
  1550. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  1551. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  1552. sumWeight(amsRequirementChild.getRequirementChildId());
  1553. sumWeightPlan(amsPlanChild.getPlanChildId());
  1554. listAggCapacity(amsPlanChild.getPlanChildId());
  1555. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  1556. if("补型钢".equals(amsRequirementChild.getOperationName()) ) {
  1557. Map<String, Object> comBaseInfoMap = new HashMap<>();
  1558. comBaseInfoMap.put("basename","补-" + omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName());
  1559. comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString());
  1560. tmiFeign.addWmsCarNo(comBaseInfoMap);
  1561. }
  1562. if("上站型钢".equals(amsRequirementChild.getOperationName())) {
  1563. Map<String, Object> comBaseInfoMap = new HashMap<>();
  1564. comBaseInfoMap.put("basename",omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName());
  1565. comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString());
  1566. tmiFeign.addWmsCarNo(comBaseInfoMap);
  1567. }
  1568. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  1569. //推送大宗
  1570. Map<String,Object> config = omsTransOrderMapper.getConfigByName("派单推送大宗");
  1571. config = config == null ? new HashMap<>() : config;
  1572. if( ("生产".equals(amsTransRequirement.getBusinessScene()))
  1573. || "否".equals(config.get("valueString")) || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")){
  1574. log.info("配置如此,无需上传大宗");
  1575. }else{
  1576. dispatchPush(omsTransOrder.getOrderType(),capacityId,driverId,omsTransOrder,omsOrderChild,planDetails);
  1577. }
  1578. if (businessTypeName != null && (businessTypeName.equals("内部领用") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) {
  1579. List<String> dlivDirnoSeqList = new ArrayList<>();
  1580. dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1());
  1581. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  1582. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdate";
  1583. wmsUtil.executeArray("90010000006", listMap, map.get("accessToken").toString(), url);
  1584. }
  1585. return "修改成功!";
  1586. }
  1587. private void matchLoadData(OmsTransOrder omsTransOrder, OmsOrderChild omsOrderChild,Map<String,Object> map) {
  1588. //获取装机数据
  1589. List<BigDecimal> materialIds = (List<BigDecimal>) map.get("materialIds");
  1590. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1591. objectObjectHashMap.put("materialIds",materialIds);
  1592. objectObjectHashMap.put("requirementStartTime",omsOrderChild.getOrderChildId());
  1593. objectObjectHashMap.put("requirementStartTime",materialIds);
  1594. //查询物料ID对应及时间的
  1595. }
  1596. public List<Map<String, Object>> getTransOrderList(Map<String, Object> map) {
  1597. List list = new ArrayList();
  1598. if (map.get("planType") != null && map.get("planType").toString() == "") {
  1599. map.remove("planType");
  1600. }
  1601. if (map.get("planType") != null && map.get("planType").toString().equals("0")) {
  1602. list.add("大宗销售订单");
  1603. list.add("普通销售汽运");
  1604. map.put("planType", list);
  1605. } else if (map.get("planType") != null && map.get("planType").toString().equals("1")) {
  1606. list.add("型钢销售订单");
  1607. list.add("高线销售订单");
  1608. map.put("planType", list);
  1609. }else if ("计时".equals(map.get("workFlag")) || "计次".equals(map.get("workFlag"))) {
  1610. List<Map<String,Object>> mapList1 = new ArrayList<>();
  1611. if((((List<String>)map.get("roleCodes"))).contains("erchejsaoma")) {
  1612. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1613. objectObjectHashMap = clone(map);
  1614. //看二车间数据
  1615. List<Map<String,Object>> mapList = (List<Map<String, Object>>) objectObjectHashMap.get("dilCompanyList");
  1616. Map<String, Object> objectMap = new HashMap<>();
  1617. objectMap.put("companyId",2234);
  1618. mapList.add(objectMap);
  1619. objectObjectHashMap.put("dilCompanyList",mapList);
  1620. objectObjectHashMap.put("businessRange","二车间-新站台");
  1621. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1622. }else if((((List<String>)map.get("roleCodes"))).contains("yichejsaoma")) {
  1623. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1624. objectObjectHashMap = clone(map);
  1625. //看一车间扫码
  1626. List<Map<String,Object>> mapList = (List<Map<String, Object>>) objectObjectHashMap.get("dilCompanyList");
  1627. Map<String, Object> objectMap = new HashMap<>();
  1628. objectMap.put("companyId",2234);
  1629. mapList.add(objectMap);
  1630. objectObjectHashMap.put("dilCompanyList",mapList);
  1631. objectObjectHashMap.put("businessRange","一车间-新站台");
  1632. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1633. }else if((((List<String>)map.get("roleCodes"))).contains("gangzh-yichej")) {
  1634. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1635. objectObjectHashMap = clone(map);
  1636. //看钢轧-一车间扫码
  1637. objectObjectHashMap.put("businessRange","一车间");
  1638. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1639. return mapList1;
  1640. }
  1641. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(map));
  1642. return mapList1;
  1643. }else if("大宗计重".equals(map.get("workFlag"))) {
  1644. return omsTransOrderMapper.getDzTransOrderList(map);
  1645. }else if("计次".equals(map.get("billingType"))){
  1646. //针对计次,高线一车间看一车间数据,二车间看二车间数据
  1647. List<Map<String,Object>> mapList1 = new ArrayList<>();
  1648. if((((List<String>)map.get("roleCodes"))).contains("erchejsaoma")) {
  1649. //看二车间数据
  1650. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1651. objectObjectHashMap = clone(map);
  1652. List<Map<String,Object>> mapList = (List<Map<String, Object>>) objectObjectHashMap.get("dilCompanyList");
  1653. Map<String, Object> objectMap = new HashMap<>();
  1654. objectMap.put("companyId",2234);
  1655. mapList.add(objectMap);
  1656. objectObjectHashMap.put("dilCompanyList",mapList);
  1657. objectObjectHashMap.put("businessRange","二车间-新站台");
  1658. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1659. }else if((((List<String>)map.get("roleCodes"))).contains("yichejsaoma")) {
  1660. //看一车间扫码
  1661. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1662. objectObjectHashMap = clone(map);
  1663. List<Map<String,Object>> mapList = (List<Map<String, Object>>) objectObjectHashMap.get("dilCompanyList");
  1664. Map<String, Object> objectMap = new HashMap<>();
  1665. objectMap.put("companyId",2234);
  1666. mapList.add(objectMap);
  1667. objectObjectHashMap.put("dilCompanyList",mapList);
  1668. objectObjectHashMap.put("businessRange","一车间-新站台");
  1669. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1670. }else if((((List<String>)map.get("roleCodes"))).contains("gangzh-yichej")) {
  1671. //看钢轧-一车间扫码
  1672. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1673. objectObjectHashMap = clone(map);
  1674. if(map.get("transOrderNumber") != null) {
  1675. objectObjectHashMap.put("businessRange","一车间");
  1676. }else{
  1677. objectObjectHashMap.put("businessRange","wuwuwuuw");
  1678. }
  1679. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap));
  1680. return mapList1;
  1681. }
  1682. mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(map));
  1683. return mapList1;
  1684. }else if (DataChange.dataToBigDecimal(map.get("orderType")).compareTo(new BigDecimal(129988)) == 0) {
  1685. return omsTransOrderMapper.getInnerGpTransOrder(map);
  1686. }else if(map.get("originType") != null) {
  1687. //查看原发数据
  1688. return omsTransOrderMapper.getOriginData(map);
  1689. }else if("站台装卸".equals(map.get("workFlag"))) {
  1690. // 获取站台装卸数据
  1691. return zhanTaiZxData(map);
  1692. }else if(((List<String>)map.get("roleCodes")).contains("siji")) {
  1693. return omsTransOrderMapper.getSijiTransOrder(map);
  1694. }
  1695. return omsTransOrderMapper.getTransOrderList(map);
  1696. }
  1697. private <T extends Serializable> T clone(Map<String, Object> obj) {
  1698. T cloneObj = null;
  1699. try {
  1700. ByteOutputStream bos = new ByteOutputStream();
  1701. ObjectOutputStream oos = new ObjectOutputStream(bos);
  1702. oos.writeObject(obj);
  1703. oos.close();
  1704. ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
  1705. ObjectInputStream ois = new ObjectInputStream(bis);
  1706. cloneObj = (T) ois.readObject();
  1707. ois.close();
  1708. } catch (Exception e) {
  1709. e.printStackTrace();
  1710. }
  1711. return cloneObj;
  1712. }
  1713. public List<Map<String, Object>> zhanTaiZxData(Map<String, Object> map) {
  1714. //根据运单号查询运单信息
  1715. Map<String,Object> searchMap = new HashMap<>();
  1716. if(map.get("transOrderNumber") != null) {
  1717. searchMap = omsTransOrderMapper.getOrderInfo(map);
  1718. map.putAll(searchMap);
  1719. }
  1720. List<Map<String,Object>> mapList = new ArrayList<>();
  1721. List<Map<String,Object>> xcData = new ArrayList<>();
  1722. List<Map<String,Object>> bxcData = new ArrayList<>();
  1723. List<Map<String,Object>> xgData = new ArrayList<>();
  1724. List<Map<String,Object>> bxgData = new ArrayList<>();
  1725. List<Map<String,Object>> gpData = new ArrayList<>();
  1726. List<Map<String,Object>> bgpData = new ArrayList<>();
  1727. if("上站线材".equals(map.get("businessName"))) {
  1728. xcData = omsTransOrderMapper.getXcData(map);
  1729. mapList.addAll(xcData);
  1730. }
  1731. if("补线材".equals(map.get("businessName"))) {
  1732. bxcData = omsTransOrderMapper.getBXcData(map);
  1733. mapList.addAll(bxcData);
  1734. }
  1735. if("上站型钢".equals(map.get("businessName"))) {
  1736. map.put("carNo",map.get("capacityNumber") + "-" + map.get("driverName"));
  1737. xgData = tmiFeign.getWmsData(map);
  1738. for(Map<String,Object> map1 : xgData) {
  1739. List<TmsLoadResult> tmsLoadResultList = tmsLoadResultMapper.selectMoveCarNoTitle(map1.get("moveCarNo").toString());
  1740. if(tmsLoadResultList != null && tmsLoadResultList.size() > 0) {
  1741. continue;
  1742. }
  1743. mapList.add(map1);
  1744. }
  1745. }
  1746. if("补型钢".equals(map.get("businessName"))) {
  1747. map.put("carNo","补-" + map.get("capacityNumber") + "-" + map.get("driverName"));
  1748. bxgData = tmiFeign.getBuWmsData(map);
  1749. for(Map<String,Object> map1 : bxgData) {
  1750. List<TmsLoadResult> tmsLoadResultList = tmsLoadResultMapper.selectMoveCarNoTitle(map1.get("moveCarNo").toString());
  1751. if(tmsLoadResultList != null && tmsLoadResultList.size() > 0) {
  1752. continue;
  1753. }
  1754. mapList.add(map1);
  1755. }
  1756. }
  1757. if("上站钢坯".equals(map.get("businessName"))) {
  1758. gpData = omsTransOrderMapper.getGpData(map);
  1759. mapList.addAll(gpData);
  1760. }
  1761. if("补钢坯".equals(map.get("businessName"))) {
  1762. bgpData = omsTransOrderMapper.getBGpData(map);
  1763. mapList.addAll(bgpData);
  1764. }
  1765. //上站型钢数据
  1766. //补型钢数据
  1767. return mapList;
  1768. }
  1769. public List<Map<String, Object>> getSaleTransOrderList(Map<String, Object> map) {
  1770. return omsTransOrderMapper.getSaleTransOrderList(map);
  1771. }
  1772. private void setWeightResult(List<TmsWeightResult> tmsWeightResults, Map<String, Object> step, BigDecimal orderId, String userId){
  1773. if (step.get("stepName").toString().equals("计毛")) {
  1774. //先走循环查下是否有待补全的计量实绩
  1775. for (TmsWeightResult item : tmsWeightResults) {
  1776. if (item.getGrossSegmentSqe() == null) {
  1777. item.setGrossSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1778. item.setAlternateFields1(step.get("stepId").toString());
  1779. return;//查到,修改并退出方法
  1780. }
  1781. }
  1782. //如果没有待补全的,新增
  1783. TmsWeightResult tmsWeightResult = new TmsWeightResult();
  1784. tmsWeightResult.setResultId(tmsWeightResultMapper.nextId());
  1785. tmsWeightResult.setTransOrderId(orderId);
  1786. tmsWeightResult.setInsertTime(new Date());
  1787. tmsWeightResult.setInsertUsername(userId);
  1788. tmsWeightResult.setDeleted(BigDecimal.ZERO);
  1789. tmsWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1790. tmsWeightResult.setAlternateFields1(step.get("stepId").toString());
  1791. tmsWeightResults.add(tmsWeightResult);
  1792. } else if (step.get("stepName").toString().equals("计皮")) {
  1793. for (TmsWeightResult item : tmsWeightResults) {
  1794. if (item.getTareSegmentSqe() == null) {
  1795. item.setTareSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1796. item.setAlternateFields2(step.get("stepId").toString());
  1797. return;
  1798. }
  1799. }
  1800. TmsWeightResult tmsWeightResult = new TmsWeightResult();
  1801. tmsWeightResult.setResultId(tmsWeightResultMapper.nextId());
  1802. tmsWeightResult.setTransOrderId(orderId);
  1803. tmsWeightResult.setInsertTime(new Date());
  1804. tmsWeightResult.setInsertUsername(userId);
  1805. tmsWeightResult.setDeleted(BigDecimal.ZERO);
  1806. tmsWeightResult.setTareSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  1807. tmsWeightResult.setAlternateFields2(step.get("stepId").toString());
  1808. tmsWeightResults.add(tmsWeightResult);
  1809. } else {
  1810. log.error("不支持的计量类型!stepName:"+step.get("stepName").toString());
  1811. }
  1812. }
  1813. public String deleteOrder(Map<String, Object> map) throws Exception {
  1814. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(
  1815. DataChange.dataToBigDecimal(map.get("transOrderId")));
  1816. omsTransOrder.setDeleteReason(map.get("deleteReason").toString());
  1817. omsTransOrder.setDeleted(BigDecimal.ONE);
  1818. omsTransOrder.setUpdateTime(new Date());
  1819. omsTransOrder.setUpdateUsername(map.get("userId").toString());
  1820. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  1821. return "删除成功!";
  1822. }
  1823. @Transactional(rollbackFor = Exception.class)
  1824. public String receiptOrder(Map<String, Object> map) throws Exception {
  1825. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(
  1826. DataChange.dataToBigDecimal(map.get("transOrderId")));
  1827. if (omsTransOrder == null || omsTransOrder.getTransOrderId() == null) {
  1828. throw new Exception("运单异常,无法接单!");
  1829. } else if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) {
  1830. throw new Exception("运单不是待接收状态,不允许接单!");
  1831. }
  1832. String confirmReason = map.get("confirmReason").toString();
  1833. if (confirmReason.equals("同意")) {
  1834. List<BigDecimal> orderIds = omsTransOrderMapper.getTransOrderByDriver(omsTransOrder.getDriverId());
  1835. if (orderIds.size() > 0) {
  1836. throw new Exception("存在正在执行的运单,无法接单");
  1837. }
  1838. omsTransOrder.setDeleted(new BigDecimal(5));
  1839. } else if (confirmReason.equals("拒绝")) {
  1840. confirmReason += (":" + map.get("refuseReason").toString());
  1841. omsTransOrder.setDeleted(new BigDecimal(6));
  1842. } else {
  1843. throw new Exception("非法的确认类型:" + confirmReason);
  1844. }
  1845. omsTransOrder.setConfirmReason(confirmReason);
  1846. omsTransOrder.setDriverConfirmTime(new Date());
  1847. omsTransOrder.setOrderCommunicationDuration(
  1848. new BigDecimal(
  1849. (omsTransOrder.getDriverConfirmTime().getTime() - omsTransOrder.getIssueTime().getTime()) / 60000
  1850. )
  1851. );
  1852. omsTransOrder.setUpdateUsername(map.get("userId").toString());
  1853. omsTransOrder.setUpdateTime(new Date());
  1854. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  1855. //推送大宗
  1856. Map<String,Object> config = omsTransOrderMapper.getConfigByName("接单推送大宗");
  1857. config = config == null ? new HashMap<>() : config;
  1858. if("是".equals(config.get("valueString"))){
  1859. dispatchPushById(omsTransOrder.getTransOrderId());
  1860. }else{
  1861. log.info("配置如此,无需上传大宗");
  1862. }
  1863. return "接受/拒绝成功!";
  1864. }
  1865. @Transactional(rollbackFor = Exception.class)
  1866. public String changeTransOrderH(Map<String, Object> map) throws Exception {
  1867. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId")));
  1868. if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) {
  1869. throw new Exception("订单状态不对,不允许删除!");
  1870. }
  1871. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("requirementId")));
  1872. Map<String, Object> childMap = new HashMap<>();
  1873. childMap.put("transRequirementId", amsTransRequirement.getTransRequirementId());
  1874. List<AmsRequirementChild> amsRequirementChildList = amsRequirementChildMapper.selectByParameters(childMap);
  1875. //修改运单状态为删除状态
  1876. omsTransOrder.setDeleted(new BigDecimal(1));
  1877. omsTransOrder.setDeleteReason(map.get("deleteReason").toString());
  1878. omsTransOrderMapper.updateByPrimaryKey(omsTransOrder);
  1879. Map<String, Object> planChildMap = new HashMap<>();
  1880. planChildMap.put("transOrderId",omsTransOrder.getTransOrderId());
  1881. List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(planChildMap);
  1882. //反写通知单总重量
  1883. sumWeight(amsRequirementChildList.get(0).getRequirementChildId());
  1884. //反写计划总重量
  1885. sumWeightPlan(omsOrderChildList.get(0).getPlanChildId());
  1886. //推送大宗
  1887. try{
  1888. Map<String, Object> dzMap = new HashMap<>();
  1889. daZongUtil.executeEnvironment("/train/delete?poundNo="+omsTransOrder.getTransOrderId(), new Map[]{dzMap});
  1890. daZongUtil.executeEnvironment("/ha/train/delete?poundNo="+omsTransOrder.getTransOrderId(), new Map[]{dzMap});
  1891. }catch (Exception e){
  1892. //不抛异常,避免之前的未传运单无法删除
  1893. e.printStackTrace();
  1894. log.error(e.getMessage());
  1895. }
  1896. return "OK";
  1897. }
  1898. @Transactional(rollbackFor = Exception.class)
  1899. public String changeTransOrder(Map<String, Object> map) throws Exception {
  1900. BigDecimal deleted = DataChange.dataToBigDecimal(map.get("deleted"));
  1901. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(
  1902. DataChange.dataToBigDecimal(map.get("transOrderId")));
  1903. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId")));
  1904. if (deleted.compareTo(new BigDecimal(1)) == 0) {
  1905. //如果调用了删除,则判断有没有过磅
  1906. if (tmsWeightResultMapper.isWeight(omsTransOrder.getTransOrderId()) > 0) {
  1907. throw new Exception("已过磅的运单无法删除!");
  1908. }else{
  1909. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1910. objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber());
  1911. Map<String,Object> transResultMap = dzFeign.getTransResult(objectObjectHashMap);
  1912. if (transResultMap != null && (transResultMap.get("ycgb") != null || transResultMap.get("gbDjbh") != null)) {
  1913. throw new Exception("已过磅的运单无法删除!");
  1914. }
  1915. }
  1916. }
  1917. if("2".equals(omsTransOrder.getDeleted().toString())&&("2".equals(deleted.toString())||"7".equals(deleted.toString()))){
  1918. throw new Exception("已完成的运单无法进行关闭!");
  1919. }
  1920. if(deleted.compareTo(new BigDecimal(2)) == 0 || deleted.compareTo(new BigDecimal(20)) == 0) {
  1921. omsOrderChild.setReceiptTime(new Date());
  1922. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild);
  1923. }
  1924. omsTransOrder.setDeleteReason("" + map.get("deleteReason"));
  1925. omsTransOrder.setDeleted(deleted);
  1926. omsTransOrder.setUpdateTime(new Date());
  1927. omsTransOrder.setUpdateUsername(map.get("userId").toString());
  1928. if(deleted.compareTo(new BigDecimal(20)) == 0) {
  1929. omsTransOrder.setDeleted(new BigDecimal(2));
  1930. }
  1931. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  1932. if (deleted.compareTo(new BigDecimal(2))==0){
  1933. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType());
  1934. Map<String, Object> params = new HashMap<>();
  1935. switch (businessMap.get("businessScene").toString()) {
  1936. case "生产":
  1937. if(map.get("tonnage")!=null){
  1938. map.put("NET_WEIGHT_NEW",String.valueOf(Double.parseDouble(map.get("tonnage").toString())*60));
  1939. }
  1940. Map<String, Object> map1 = emsFeign.emsdetailsordersAdd(map);
  1941. if(!(boolean)map1.get("succeed")){
  1942. throw new Exception((String)map1.get("message"));
  1943. }
  1944. break;
  1945. // default:
  1946. // throw new Exception("未知的业务类型!");
  1947. }
  1948. }
  1949. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("planChildId")));
  1950. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  1951. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  1952. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  1953. if (businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")
  1954. || (amsTransRequirement.getTransMode() != null && amsTransRequirement.getTransMode().compareTo(new BigDecimal(1)) == 0)) {
  1955. AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId());
  1956. amsTransPlan.setDeleted(new BigDecimal(2));
  1957. amsTransPlanMapper.updateByPrimaryKey(amsTransPlan);
  1958. }
  1959. try {
  1960. Map<String, Object> objectObjectHashMap = new HashMap<>();
  1961. objectObjectHashMap.put("capacityNumber",omsTransOrder.getCapacityNumber());
  1962. objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber());
  1963. objectObjectHashMap.put("identityCard",omsTransOrder.getIdentityCard());
  1964. objectObjectHashMap.put("capacityId",omsTransOrder.getCapacityId());
  1965. objectObjectHashMap.put("driverId",omsTransOrder.getDriverId());
  1966. //omsTransOrderService.buluCapacity(map);
  1967. } catch (Exception e) {
  1968. e.printStackTrace();
  1969. }
  1970. if(deleted.compareTo(new BigDecimal(7)) == 0
  1971. || deleted.compareTo(new BigDecimal(1)) == 0){
  1972. //关闭运单,推送大宗
  1973. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType());
  1974. Map<String, Object> params = new HashMap<>();
  1975. if (businessTypeName != null && !businessTypeName.equals("内部领用") && !businessTypeName.equals("型钢销售订单") && !businessTypeName.equals("高线销售订单")) {
  1976. switch (businessMap.get("businessScene").toString()) {
  1977. case "采购":
  1978. params.put("Rjhh", omsTransOrder.getSerialNumber());
  1979. params.put("rjhh", omsTransOrder.getSerialNumber());
  1980. params.put("Username", map.get("userName"));
  1981. params.put("username", map.get("userName"));
  1982. params.put("note", "单据错误");
  1983. params.put("action",3);
  1984. daZongUtil.execute("30010000016", new Map[]{params});
  1985. break;
  1986. case "销售":
  1987. params.put("Rjhh", omsTransOrder.getSerialNumber());
  1988. params.put("rjhh", omsTransOrder.getSerialNumber());
  1989. params.put("username", map.get("userName"));
  1990. params.put("note", "单据错误");
  1991. params.put("action",3);
  1992. daZongUtil.execute("30010000016", new Map[]{params});
  1993. break;
  1994. case "生产":
  1995. //map.put("NET_WEIGHT", map.get("materialSpecification"));
  1996. //emsFeign.emsdetailsordersAdd(map);
  1997. //params.put("Rjhh", omsTransOrder.getSerialNumber());
  1998. //params.put("rjhh", omsTransOrder.getSerialNumber());
  1999. //params.put("username", map.get("userName"));
  2000. //params.put("note", "单据错误");
  2001. //params.put("action",3);
  2002. //daZongUtil.execute("30010000016", new Map[]{params});
  2003. break;
  2004. default:
  2005. throw new Exception("未知的业务类型!");
  2006. }
  2007. } else if (businessTypeName != null && businessTypeName.equals("内部领用") && amsTransRequirement.getAlternateFields18().equals("1")) {
  2008. switch (businessMap.get("businessScene").toString()) {
  2009. case "采购":
  2010. params.put("Rjhh", omsTransOrder.getSerialNumber());
  2011. params.put("rjhh", omsTransOrder.getSerialNumber());
  2012. params.put("Username", map.get("userName"));
  2013. params.put("username", map.get("userName"));
  2014. params.put("note", "单据错误");
  2015. daZongUtil.execute("30010000016", new Map[]{params});
  2016. break;
  2017. case "销售":
  2018. params.put("Rjhh", omsTransOrder.getSerialNumber());
  2019. params.put("rjhh", omsTransOrder.getSerialNumber());
  2020. params.put("username", map.get("userName"));
  2021. params.put("note", "单据错误");
  2022. daZongUtil.execute("30010000016", new Map[]{params});
  2023. break;
  2024. case "生产":
  2025. //map.put("NET_WEIGHT", map.get("materialSpecification"));
  2026. //emsFeign.emsdetailsordersAdd(map);
  2027. //params.put("Rjhh", omsTransOrder.getSerialNumber());
  2028. //params.put("rjhh", omsTransOrder.getSerialNumber());
  2029. //params.put("username", map.get("userName"));
  2030. //params.put("note", "单据错误");
  2031. //daZongUtil.execute("30010000016", new Map[]{params});
  2032. break;
  2033. default:
  2034. throw new Exception("未知的业务类型!");
  2035. }
  2036. }
  2037. }
  2038. if (businessTypeName != null && (businessTypeName.equals("内部领用") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) {
  2039. Map<String, Object> paramsMap = new HashMap<>();
  2040. paramsMap.put("id", map.get("dlivDirnoSeq").toString());
  2041. try {
  2042. //传WMS系统
  2043. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuDel";
  2044. JSONObject accessToken = wmsUtil.executeObject("90010000005", paramsMap, map.get("accessToken").toString(), url);
  2045. if (!accessToken.get("code").toString().equals("0")) {
  2046. throw new Exception(accessToken.get("message").toString());
  2047. }
  2048. } catch (Exception e) {
  2049. e.printStackTrace();
  2050. log.error("推送wms异常:{}", e);
  2051. throw new Exception("推送wms系统异常! "+ e.getMessage());
  2052. }
  2053. }
  2054. omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted());
  2055. threadPool.execute(()->{
  2056. try {
  2057. Thread.sleep(500);
  2058. omsTransOrderService.sumWeight(amsRequirementChild.getRequirementChildId());
  2059. omsTransOrderService.sumWeightPlan(amsPlanChild.getPlanChildId());
  2060. omsTransOrderService.listAggCapacity(amsPlanChild.getPlanChildId());
  2061. } catch (InterruptedException e) {
  2062. e.printStackTrace();
  2063. }
  2064. });
  2065. return "OK";
  2066. }
  2067. public String closeTransOrderByPlan(Map<String, Object> map) {
  2068. omsTransOrderMapper.closeTransOrderByPlan(map);
  2069. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transPlanId")));
  2070. Map<String, Object> orderChildMap = new HashMap<>();
  2071. orderChildMap.put("transPlanId", omsTransOrder.getTransOrderId());
  2072. List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(orderChildMap);
  2073. Set<BigDecimal> set = new HashSet<>();
  2074. for (OmsOrderChild omsOrderChild : omsOrderChildList) {
  2075. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  2076. set.add(amsPlanChild.getRequirementChildId());
  2077. }
  2078. for (BigDecimal requirementChildId : set) {
  2079. sumWeight(requirementChildId);
  2080. }
  2081. return "关闭成功!";
  2082. }
  2083. public List<Map<String, Object>> getTransResult(Map<String, Object> map) throws Exception {
  2084. //查询运单
  2085. Map<String, Object> transOrder = omsTransOrderMapper.getTransOrder(map);
  2086. if (transOrder == null) {
  2087. throw new Exception("运输订单不可用!");
  2088. }
  2089. //查询所有实绩,按顺序排序
  2090. Map<String, Object> searchMap = new HashMap<>();
  2091. searchMap.put("transOrderId", transOrder.get("transOrderId"));
  2092. List<Map<String, Object>> tmsReplaceFrontResults = tmsReplaceFrontResultMapper.getTmsReplaceFrontResultList2(searchMap);
  2093. List<Map<String, Object>> tmsSignInResults = tmsSignInResultMapper.getTmsSignInResultList2(searchMap);
  2094. List<Map<String, Object>> tmsEnfactoryResults = tmsEnfactoryResultMapper.getTmsEnfactoryResultList2(searchMap);
  2095. List<Map<String, Object>> tmsOutfactoryResults = tmsOutfactoryResultMapper.getTmsOutfactoryResultList2(searchMap);
  2096. List<Map<String, Object>> tmsLoadResults = tmsLoadResultMapper.getTmsLoadResultList2(searchMap);
  2097. List<Map<String, Object>> tmsUnloadResults = tmsUnloadResultMapper.getTmsUnloadResultList2(searchMap);
  2098. List<Map<String, Object>> tmsWeightResults = tmsWeightResultMapper.getTmsWeightResultList2(searchMap);
  2099. List<Map<String, Object>> tmsQualityResults = tmsQualityResultMapper.getTmsQualityResultList2(searchMap);
  2100. List<Map<String, Object>> tmsArrivalResults = tmsArrivalResultMapper.getTmsArrivalResultList2(searchMap);
  2101. List<Map<String, Object>> tmsReceiptResults = tmsReceiptResultMapper.getTmsReceiptResultList2(searchMap);
  2102. //添加进新数组
  2103. List<Map<String, Object>> list = new ArrayList<>();
  2104. list.addAll(tmsReplaceFrontResults);
  2105. list.addAll(tmsSignInResults);
  2106. list.addAll(tmsEnfactoryResults);
  2107. list.addAll(tmsOutfactoryResults);
  2108. list.addAll(tmsLoadResults);
  2109. list.addAll(tmsUnloadResults);
  2110. list.addAll(tmsQualityResults);
  2111. list.addAll(tmsArrivalResults);
  2112. list.addAll(tmsReceiptResults);
  2113. for (Map<String, Object> item : tmsWeightResults) {
  2114. JSONObject tare = new JSONObject();
  2115. JSONObject gross = new JSONObject();
  2116. tare.put("type", "计皮");
  2117. tare.put("segmentSqe", item.get("tareSegmentSqe"));
  2118. tare.put("weight", item.get("tareWeight"));
  2119. tare.put("weightTime", item.get("tareWeightTime"));
  2120. tare.put("resultTime", item.get("tareWeightTime"));
  2121. tare.put("weightPlace", item.get("tarePlace"));
  2122. tare.put("resultPoint", item.get("tarePlace"));
  2123. tare.put("segmentSqe", item.get("tareSegmentSqe"));
  2124. tare.put("currentLineSqe", item.get("currentLineSqe"));
  2125. tare.put("poundNo", item.get("poundNo"));
  2126. tare.put("materialName", item.get("materialName"));
  2127. tare.put("netWeight", item.get("netWeight"));
  2128. tare.put("netWeightTime", item.get("netWeightTime"));
  2129. tare.put("pointNames", item.get("tarePointNames"));
  2130. tare.put("pointIds", item.get("tarePoints"));
  2131. tare.put("resultId", item.get("resultId"));
  2132. tare.put("transOrderId", item.get("transOrderId"));
  2133. gross.put("type", "计毛");
  2134. gross.put("segmentSqe", item.get("grossSegmentSqe"));
  2135. gross.put("weight", item.get("grossWeight"));
  2136. gross.put("weightTime", item.get("grossWeightTime"));
  2137. gross.put("resultTime", item.get("grossWeightTime"));
  2138. gross.put("weightPlace", item.get("grossPlace"));
  2139. gross.put("resultPoint", item.get("grossPlace"));
  2140. gross.put("segmentSqe", item.get("grossSegmentSqe"));
  2141. gross.put("poundNo", item.get("poundNo"));
  2142. gross.put("materialName", item.get("materialName"));
  2143. gross.put("netWeight", item.get("netWeight"));
  2144. gross.put("netWeightTime", item.get("netWeightTime"));
  2145. gross.put("currentLineSqe", item.get("currentLineSqe"));
  2146. gross.put("pointNames", item.get("grossPointNames"));
  2147. gross.put("pointIds", item.get("grossPoints"));
  2148. gross.put("resultId", item.get("resultId"));
  2149. gross.put("transOrderId", item.get("transOrderId"));
  2150. list.add(tare);
  2151. list.add(gross);
  2152. }
  2153. //排序
  2154. list.sort(new Comparator<Map<String, Object>>() {
  2155. @Override
  2156. public int compare(Map<String, Object> o1, Map<String, Object> o2) {
  2157. JSONObject j1 = JSONObject.parseObject(JSONObject.toJSONString(o1));
  2158. JSONObject j2 = JSONObject.parseObject(JSONObject.toJSONString(o2));
  2159. return j1.getBigDecimal("segmentSqe")
  2160. .compareTo(j2.getBigDecimal("segmentSqe"));
  2161. }
  2162. });
  2163. List<Map<String, Object>> timingList = tmsTimingResultMapper.tmstimingresultsList(searchMap);
  2164. int i = 0;
  2165. for (Map<String, Object> item : timingList) {
  2166. item.put("currentLineSqe", timingList.size());
  2167. item.put("segmentSqe", i);
  2168. item.put("type", item.get("type") + "" + item.get("TIME_TYPE"));
  2169. i++;
  2170. }
  2171. //计时作业直接加进去
  2172. list.addAll(timingList);
  2173. //钢坯内转一
  2174. if("钢厂-高线一车间".equals(transOrder.get("businessRange")) && "拉红送".equals(transOrder.get("businessName"))) {
  2175. List<Map<String,Object>> innerGpData = omsTransOrderMapper.getInnerGpData(transOrder);
  2176. list.addAll(innerGpData);
  2177. }
  2178. if("上站型钢".equals(transOrder.get("businessName"))) {
  2179. Map<String, Object> objectObjectHashMap = new HashMap<>();
  2180. objectObjectHashMap.put("capacityNumber",transOrder.get("capacityNumber") + "-" + transOrder.get("driverName"));
  2181. objectObjectHashMap.put("requirementStartTime",transOrder.get("driverConfirmTime"));
  2182. objectObjectHashMap.put("requirementEndTime",transOrder.get("requirementEndTime"));
  2183. List<Map<String,Object>> xgData = tmiFeign.getWmsData(objectObjectHashMap);
  2184. list.addAll(xgData);
  2185. }
  2186. if("补型钢".equals(transOrder.get("businessName"))) {
  2187. Map<String, Object> objectObjectHashMap = new HashMap<>();
  2188. objectObjectHashMap.put("capacityNumber","补-" + transOrder.get("capacityNumber") + "-" + transOrder.get("driverName"));
  2189. objectObjectHashMap.put("requirementStartTime",transOrder.get("driverConfirmTime"));
  2190. objectObjectHashMap.put("requirementEndTime",transOrder.get("requirementEndTime"));
  2191. List<Map<String,Object>> xgData = tmiFeign.getBuWmsData(objectObjectHashMap);
  2192. list.addAll(xgData);
  2193. }
  2194. return list;
  2195. }
  2196. //批量新增销售派车单
  2197. @Transactional(rollbackFor = Exception.class)
  2198. public String saleDispatchOrderList(Map<String, Object> map) throws Exception {
  2199. List dlivDirnoSeqList = new ArrayList();
  2200. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("planChildId")));
  2201. AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId());
  2202. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  2203. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  2204. List<Map<String, Object>> mapList = (ArrayList) map.get("list");
  2205. Map<String, Object> orderChild = new HashMap<>();
  2206. orderChild.put("planChildId", DataChange.dataToBigDecimal(map.get("planChildId")));
  2207. List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(orderChild);
  2208. //效验是否超出计划重量
  2209. BigDecimal sumWeight = new BigDecimal(0);
  2210. Map<String, Object> transPlanMap = new HashMap<>();
  2211. transPlanMap.put("serialNumber", amsTransPlan.getSerialNumber());
  2212. List<Map<String, Object>> salePlanList = amsTransPlanMapper.getSalePlanList(transPlanMap);
  2213. BigDecimal residueweight = DataChange.dataToBigDecimal(salePlanList.get(0).get("residueweight"));
  2214. for (Map<String, Object> stringObjectMap : mapList) {
  2215. sumWeight = sumWeight.add(DataChange.dataToBigDecimal(stringObjectMap.get("materialWeight")));
  2216. }
  2217. if (sumWeight.compareTo(residueweight) == 1) {
  2218. throw new Exception("超出计划重量!");
  2219. }
  2220. //查询物资及物资大类信息
  2221. Map<String, Object> materialMap = new HashMap<>();
  2222. materialMap.put("materialId", amsRequirementChild.getMaterialId());
  2223. Map<String, Object> materialType = omsTransOrderMapper.getMaterialInfo(materialMap);
  2224. if (materialType == null) {
  2225. materialType = new HashMap<>();
  2226. }
  2227. BigDecimal lineId;
  2228. if (amsTransRequirement.getLineId() != null) {
  2229. lineId = amsTransRequirement.getLineId();
  2230. } else {
  2231. lineId = omsTransOrderMapper.matchLineId(amsTransRequirement.getBusinessType(),
  2232. DataChange.dataToBigDecimal(materialType.get("materialTypeId")),
  2233. DataChange.dataToBigDecimal(amsRequirementChild.getOperationsNameId()),
  2234. amsRequirementChild.getMaterialId(),
  2235. amsRequirementChild.getShippingPointId() == null ? new BigDecimal(0) : amsRequirementChild.getShippingPointId(),
  2236. amsRequirementChild.getReceivingPointId(),
  2237. amsTransRequirement.getReceivingCompanyId());
  2238. }
  2239. //校验分录余额
  2240. Map<String, Object> objectMap = new HashMap<>();
  2241. objectMap.put("planChildId", amsPlanChild.getPlanChildId());
  2242. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild2(objectMap);
  2243. if (planDetails == null) {
  2244. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  2245. }
  2246. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  2247. String businessScene = DataChange.getString(planDetails.get("businessScene"));
  2248. List<Map<String, Object>> mapArray = new ArrayList();
  2249. List<OmsTransOrder> transOrderList = new ArrayList<>();
  2250. List<OmsOrderChild> orderChildList = new ArrayList<>();
  2251. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  2252. int i = 1;
  2253. for (Map<String, Object> maps : mapList) {
  2254. // if((((List<String>)map.get("roleCodes"))).contains("xsxz") && "大宗销售订单".equals(businessTypeName) && omsTransOrderMapper.countDriverScene(DataChange.dataToBigDecimal(maps.get("driverId"))) > 0){
  2255. // throw new Exception(businessTypeName + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  2256. // }
  2257. //增加派车主表记录
  2258. OmsTransOrder omsTransOrder = new OmsTransOrder();
  2259. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  2260. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  2261. omsTransOrder.getTransOrderId().intValue()));
  2262. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(maps.get("capacityId")));
  2263. if (map.get("transMode").equals("汽运")) {
  2264. omsTransOrder.setDriverId(DataChange.dataToBigDecimal(maps.get("driverId")));
  2265. omsTransOrder.setDriverPhone("" + maps.get("personPhone"));
  2266. }
  2267. omsTransOrder.setOrderType(amsTransRequirement.getBusinessType());
  2268. omsTransOrder.setCurrentLineSeq(DataChange.dataToBigDecimal(0));
  2269. omsTransOrder.setIssueTime(new Date());
  2270. omsTransOrder.setInsertTime(new Date());
  2271. omsTransOrder.setDeleted(new BigDecimal(4));
  2272. omsTransOrder.setLineId(lineId);
  2273. omsTransOrder.setInsertUsername(map.get("userName").toString());
  2274. omsTransOrder.setAlternateFields3(map.get("isMultiple") == null ? "" : map.get("isMultiple").toString());
  2275. omsTransOrder.setAlternateFields8(map.get("multipleType") == null ? "" : map.get("multipleType").toString());
  2276. omsTransOrder.setAlternateFields28(map.get("multipleTimes") == null ? "1" : map.get("multipleTimes").toString());
  2277. entityDispose.disposeOmsTransOrder(omsTransOrder);
  2278. if(maps.get("supplementaryId") != null
  2279. && maps.get("supplementaryId").toString() != ""
  2280. && ((ArrayList)maps.get("supplementaryId")).size() > 0){
  2281. String bhdh = omsTransOrderMapper.getBhdhById((ArrayList)maps.get("supplementaryId"));
  2282. omsTransOrder.setAlternateFields6(bhdh);
  2283. }
  2284. transOrderList.add(omsTransOrder);
  2285. //新增派车子表记录
  2286. OmsOrderChild omsOrderChild = new OmsOrderChild();
  2287. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  2288. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  2289. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(map.get("planChildId")));
  2290. omsOrderChild.setMaterialId(amsPlanChild.getMaterialId());
  2291. omsOrderChild.setDeleted(new BigDecimal(0));
  2292. if (maps.containsKey("materialNumber")) {
  2293. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber")));
  2294. }
  2295. if (!maps.containsKey("materialWeight")) {
  2296. throw new Exception("请填写物资重量!");
  2297. }
  2298. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight")));
  2299. if(omsOrderChild.getMaterialNumber().compareTo(BigDecimal.ZERO) <= 0) {
  2300. throw new Exception("物资重量异常-需大于0");
  2301. }
  2302. omsOrderChild.setInsertTime(new Date());
  2303. omsOrderChild.setInsertUsername(map.get("userName").toString());
  2304. omsOrderChild.setAlternateFields5(maps.get("personnelCard") == null ? null : maps.get("personnelCard").toString());
  2305. omsOrderChild.setAlternateFields6(maps.get("personnelPhone") == null ? null : maps.get("personnelPhone").toString());
  2306. omsOrderChild.setAlternateFields7("1");
  2307. if (businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) {
  2308. omsOrderChild.setAlternateFields1(omsOrderChildMapper.selectMax(i));
  2309. i++;
  2310. }
  2311. omsOrderChild.setAlternateFields2(map.get("loadPointId") == null ? amsTransPlan.getAlternateFields2() : map.get("loadPointId").toString());
  2312. if (map.get("transMode").equals("火运")) {
  2313. omsOrderChild.setAlternateFields3("" + maps.get("allocation"));
  2314. dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1());
  2315. }
  2316. entityDispose.disposeOrderChild(omsOrderChild);
  2317. orderChildList.add(omsOrderChild);
  2318. if (map.get("transMode").equals("汽运")) {
  2319. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2320. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(amsTransRequirement.getBusinessType());
  2321. Map<String, Object> capacity = omsTransOrderMapper.getCapacityById(DataChange.dataToBigDecimal(maps.get("capacityId")));
  2322. Map<String, Object> driver = omsTransOrderMapper.getPersonnelById(DataChange.dataToBigDecimal(maps.get("driverId")));
  2323. if (businessMap == null) {
  2324. throw new Exception("业务类型不存在!");
  2325. } else if (capacity == null) {
  2326. throw new Exception("车辆不存在!");
  2327. } else if (driver == null) {
  2328. throw new Exception("司机不存在!");
  2329. }
  2330. if("是".equals(capacity.get("capacityBlacklist"))) {
  2331. throw new Exception("不允许派发给黑名单车辆");
  2332. }
  2333. Map<String, Object> params = new HashMap<>();
  2334. params.put("clbh", capacity.get("capacityNumber"));
  2335. params.put("cllx", capacity.get("capacityType"));
  2336. params.put("sjxm", driver.get("personnelName"));
  2337. params.put("sfzh", driver.get("identityCard"));
  2338. params.put("tel", driver.get("personnelPhone"));
  2339. params.put("wlbh", planDetails.get("materialCode"));
  2340. params.put("bmbh", planDetails.get("receiveSourceId"));
  2341. params.put("shbh", planDetails.get("supplierCompanyCode"));
  2342. params.put("fhbh", planDetails.get("carrierCode"));
  2343. params.put("ckbh", planDetails.get("shippingPointSourceId") == null ? "" : planDetails.get("shippingPointSourceId"));
  2344. params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  2345. params.put("note", "");
  2346. params.put("zjs", omsOrderChild.getMaterialWeight() == null ? "0" : omsOrderChild.getMaterialWeight());
  2347. params.put("zsl", omsOrderChild.getMaterialNumber());
  2348. params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice"));
  2349. params.put("yfdj", "");//运费单价
  2350. params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  2351. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId"));
  2352. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId"));
  2353. params.put("ywbh", amsTransRequirement.getBusinessType());
  2354. params.put("rjhh", omsTransOrder.getSerialNumber());
  2355. params.put("username", omsTransOrder.getInsertUsername());
  2356. params.put("wldh", planDetails.get("planNumber"));
  2357. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  2358. params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码
  2359. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  2360. if(omsTransOrder.getAlternateFields6() != null){
  2361. params.put("bhdh",omsTransOrder.getAlternateFields6());
  2362. String[] bhdhList = omsTransOrder.getAlternateFields6().split(",");
  2363. params.put("bhnm",omsTransOrderMapper.getTdlsByBhdh(bhdhList));
  2364. }else{
  2365. params.put("bhdh","");
  2366. params.put("bhnm","");
  2367. }
  2368. mapArray.add(params);
  2369. //推送车辆档案
  2370. Map<String,Object> capacityMap = new HashMap<>();
  2371. capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId());
  2372. driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
  2373. capacityMap.putAll(capacity);
  2374. capacityMap.putAll(driver);
  2375. daZongUtil.execute("30010000002", new Map[]{capacityMap});
  2376. //新增各类实绩
  2377. creatTransResult(lineId, omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),map.get("userName").toString());
  2378. }
  2379. }
  2380. omsTransOrderMapper.batchInsert(transOrderList);
  2381. omsOrderChildMapper.batchInsert(orderChildList);
  2382. //反写通知单总重量
  2383. sumWeight(amsRequirementChild.getRequirementChildId());
  2384. //如果是汽运需要传大宗(改到接单时推送)
  2385. if (mapArray.size() > 0 && (businessTypeName.equals("大宗销售订单") || businessTypeName.equals("普通销售汽运"))) {
  2386. Map[] params = new Map[mapArray.size()];
  2387. for (int j = 0; j < mapArray.size(); j++) {
  2388. params[j] = mapArray.get(j);
  2389. }
  2390. daZongUtil.execute("30010000036", params);
  2391. }
  2392. //如果有销售订单、业务类型是安泰高线销售或安泰型钢销售需要传WMS,并且发运通知单的状态是正在执行才推送
  2393. if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) == 0
  2394. && dlivDirnoSeqList.size() > 0
  2395. && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)
  2396. && (businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售")
  2397. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) {
  2398. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  2399. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd";
  2400. wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url);
  2401. }
  2402. return "OK";
  2403. }
  2404. //销售新增派车单
  2405. @Transactional(rollbackFor = Exception.class)
  2406. public String saleDispatchOrder(Map<String, Object> map) throws Exception {
  2407. List dlivDirnoSeqList = new ArrayList();
  2408. BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId"));
  2409. BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId"));
  2410. //新增运输订单
  2411. OmsTransOrder omsTransOrder = new OmsTransOrder();
  2412. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  2413. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  2414. omsTransOrder.getTransOrderId().intValue()));
  2415. omsTransOrder.setCapacityId(capacityId);
  2416. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  2417. omsTransOrder.setOrderType(BigDecimal.ZERO);
  2418. omsTransOrder.setIssueTime(new Date());
  2419. omsTransOrder.setInsertTime(new Date());
  2420. omsTransOrder.setDeleted(new BigDecimal(4));
  2421. omsTransOrder.setInsertUsername(map.get("userName").toString());
  2422. omsTransOrder.setDriverId(driverId);
  2423. map.put("transOrderId", omsTransOrder.getTransOrderId());
  2424. //新增运输订单子表
  2425. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  2426. List<Map<String, Object>> planChildren = (ArrayList) map.get("children");
  2427. if (planChildren.size() <= 0) {
  2428. throw new Exception("没有计划,无法派单!");
  2429. }
  2430. BigDecimal orderType = null;
  2431. for (Map<String, Object> planChild : planChildren) {
  2432. //获取计划子表数据
  2433. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planChild.get("planChildId")));
  2434. //获取计划主表数据
  2435. AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId());
  2436. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  2437. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  2438. //查询物资及物资大类信息
  2439. BigDecimal lineId;
  2440. if (amsTransRequirement.getLineId() != null) {
  2441. lineId = amsTransRequirement.getLineId();
  2442. } else {
  2443. Map<String, Object> materialMap = new HashMap<>();
  2444. materialMap.put("materialId", amsRequirementChild.getMaterialId());
  2445. Map<String, Object> materialType = omsTransOrderMapper.getMaterialInfo(materialMap);
  2446. if (materialType == null) {
  2447. materialType = new HashMap<>();
  2448. }
  2449. lineId = omsTransOrderMapper.matchLineId(amsTransRequirement.getBusinessType(),
  2450. DataChange.dataToBigDecimal(materialType.get("materialTypeId")),
  2451. DataChange.dataToBigDecimal(amsRequirementChild.getOperationsNameId()),
  2452. amsRequirementChild.getMaterialId(),
  2453. amsRequirementChild.getShippingPointId(),
  2454. amsRequirementChild.getReceivingPointId(),
  2455. amsTransRequirement.getReceivingCompanyId());
  2456. }
  2457. omsTransOrder.setLineId(lineId);
  2458. //根据需求子表主键查找是火运还是汽运(0:汽运,1:火运)
  2459. String transMode = omsTransOrderMapper.getTransModeByRequirementChildId(amsPlanChild.getRequirementChildId());
  2460. if (amsTransPlan.getAlternateFields1().equals("是")) {
  2461. //多拼计划只能派发一车
  2462. //查找计划下派发了多少车
  2463. Integer integer = omsTransOrderMapper.selectCountByOmsOrderChild(amsPlanChild.getPlanChildId());
  2464. if (integer > 0) {
  2465. throw new Exception("多拼计划只能派发一车!");
  2466. }
  2467. }
  2468. //校验分录余额
  2469. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild2(planChild);
  2470. omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") + "");
  2471. if (planDetails == null) {
  2472. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  2473. }
  2474. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  2475. String businessScene = DataChange.getString(planDetails.get("businessScene"));
  2476. if (businessType == null) {
  2477. throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!");
  2478. } else if (orderType == null) {
  2479. orderType = businessType;
  2480. } else if (orderType.compareTo(businessType) != 0) {
  2481. throw new Exception("分录类型不一致,无法派单!");
  2482. }
  2483. // if((businessScene.equals("采购") || businessScene.equals("销售")) && omsTransOrderMapper.countDriverScene(driverId,businessScene) > 0){
  2484. // throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!");
  2485. // }
  2486. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  2487. BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialWeight"));
  2488. if (materialNumber.compareTo(numberLeft) > 0) {
  2489. throw new Exception("重量超出需求限制!");
  2490. }
  2491. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  2492. switch (controlMode) {
  2493. case 0:
  2494. //不控制
  2495. break;
  2496. case 1:
  2497. //1:数量控制
  2498. numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  2499. materialNumber = DataChange.dataToBigDecimal(planChild.get("materialWeight"));
  2500. if (materialNumber.compareTo(numberLeft) > 0) {
  2501. throw new Exception("重量超出需求限制!");
  2502. }
  2503. break;
  2504. case 2:
  2505. //2:金额控制
  2506. break;
  2507. case 3:
  2508. //3:车数控制
  2509. BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft"));
  2510. BigDecimal truckNumber = BigDecimal.ONE;
  2511. if (truckNumber.compareTo(truckLeft) > 0) {
  2512. throw new Exception("车辆数量超出需求限制!");
  2513. }
  2514. break;
  2515. default:
  2516. throw new Exception("未知的控制类型!");
  2517. }
  2518. omsTransOrderMapper.updatePlanStatus(planDetails);
  2519. OmsOrderChild omsOrderChild = new OmsOrderChild();
  2520. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  2521. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  2522. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId")));
  2523. omsOrderChild.setMaterialId(amsPlanChild.getMaterialId());
  2524. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(planChild.get("materialNumber")));
  2525. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(planChild.get("materialWeight")));
  2526. if(omsOrderChild.getMaterialNumber().compareTo(BigDecimal.ZERO) <= 0) {
  2527. throw new Exception("物资重量异常:需大于0");
  2528. }
  2529. omsOrderChild.setAlternateFields1(planChild.get("dlivDirnoSeq").toString());//派车单号
  2530. omsOrderChild.setOriginMaterialZjs(DataChange.dataToBigDecimal(planChild.get("originMaterialZjs")));
  2531. omsOrderChild.setOriginPoundNo(planChild.get("originPoundNo") == null ? "":planChild.get("originPoundNo").toString());
  2532. omsOrderChild.setAlternateFields4(planChild.get("originPoundUrl") == null ? "":planChild.get("originPoundUrl").toString());
  2533. omsOrderChild.setOriginDate(DataChange.dataToDate(planChild.get("originDate")));
  2534. omsOrderChild.setInsertUpdateRemark("" + map.get("memo"));
  2535. omsOrderChild.setAlternateFields3(map.get("position").toString());//临时货位
  2536. omsOrderChild.setAlternateFields7("1");
  2537. dlivDirnoSeqList.add(planChild.get("dlivDirnoSeq").toString());
  2538. //String storageattr = wmsUtil.getStorageattrToWMSStorageattr(map.get("storageattr").toString());
  2539. //获取装货点-仓库Id
  2540. //String storageattr = omsTransOrderMapper.findOperationByOperationName(storageattr1);
  2541. //omsOrderChild.setAlternateFields2(storageattr);//发货仓库
  2542. omsOrderChild.setInsertTime(new Date());
  2543. omsOrderChild.setInsertUsername(map.get("userName").toString());
  2544. omsOrderChild.setDeleted(BigDecimal.ZERO);
  2545. entityDispose.disposeOrderChild(omsOrderChild);
  2546. omsOrderChildren.add(omsOrderChild);
  2547. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  2548. //推送大宗 火运不需要对接大宗(改到接单时推送)
  2549. if (transMode.equals("0") && businessTypeName.equals("大宗销售订单")) {
  2550. //推送大宗
  2551. dispatchPush(businessType, capacityId, driverId, omsTransOrder, omsOrderChild, planDetails);
  2552. }
  2553. }
  2554. //新增各类实绩
  2555. creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(),omsOrderChildren.get(0).getPlanChildId(), map.get("userName").toString());
  2556. omsTransOrder.setOrderType(orderType);
  2557. entityDispose.disposeOmsTransOrder(omsTransOrder);
  2558. omsTransOrderMapper.insertSelective(omsTransOrder);
  2559. omsOrderChildMapper.batchInsert(omsOrderChildren);
  2560. //如果发运通知单的状态是正在执行就推送WMS,否则不推送(为了应该能让司机能够进厂排队),并且需要有销售订单、业务类型是安泰高线销售或安泰型钢销售
  2561. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChildren.get(0).getPlanChildId());
  2562. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  2563. //反写总重量
  2564. sumWeight(amsRequirementChild.getRequirementChildId());
  2565. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  2566. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  2567. if (amsRequirementChild.getDeleted().compareTo(DataChange.dataToBigDecimal(8)) == 0
  2568. && dlivDirnoSeqList.size() > 0
  2569. && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)
  2570. && (businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售")
  2571. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("型钢销售订单"))) {
  2572. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  2573. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd";
  2574. wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url);
  2575. }
  2576. return "派车成功!";
  2577. }
  2578. public BigDecimal getCountEnfactory(Map<String, Object> map) {
  2579. return omsTransOrderMapper.getCountEnfactory(map);
  2580. }
  2581. /**
  2582. * 更新运单状态
  2583. *
  2584. * @param transOrderId
  2585. * @param sequence 路段顺序号
  2586. * @param orderStatus 运单执行状态
  2587. * @return
  2588. */
  2589. public int updateOrderStatus(BigDecimal transOrderId, BigDecimal sequence, String orderStatus, String userName) throws Exception {
  2590. try {
  2591. Map<String, Object> searchMap = new HashMap<>();
  2592. searchMap.put("transOrderId", transOrderId.toString());
  2593. searchMap.put("userName", userName);
  2594. Map<String, Object> transOrder = omsTransOrderMapper.getTransOrder(searchMap);
  2595. if (transOrder == null) {
  2596. throw new Exception("没有查询到唯一运单!");
  2597. }
  2598. searchMap.put("businessTypeName",transOrder.get("businessTypeName").toString());
  2599. searchMap.put("billingType",transOrder.get("billingType").toString());
  2600. BigDecimal deleted = DataChange.dataToBigDecimal(transOrder.get("deleted"));
  2601. BigDecimal endSeq = DataChange.dataToBigDecimal(transOrder.get("endSeq"));
  2602. BigDecimal currentLineSeq = DataChange.dataToBigDecimal(transOrder.get("currentLineSeq"));
  2603. if (sequence.compareTo(currentLineSeq.add(BigDecimal.ONE)) != 0) {
  2604. Map<String,Object> config = omsTransOrderMapper.getConfigByName("运输实绩顺序执行");
  2605. config = config == null ? new HashMap<>() : config;
  2606. if("否".equals(config.get("valueString"))){
  2607. log.info("配置如此,允许跳步骤执行");
  2608. }else{
  2609. throw new Exception("顺序错误,不允许跳步骤执行!");
  2610. }
  2611. }
  2612. OmsTransOrder omsTransOrder = new OmsTransOrder();
  2613. omsTransOrder.setSerialNumber(transOrder.get("transOrderNumber").toString());
  2614. omsTransOrder.setTransOrderId(transOrderId);
  2615. omsTransOrder.setCurrentLineSeq(sequence);
  2616. omsTransOrder.setOrderStatus(orderStatus);
  2617. //补录车辆档案
  2618. //try{
  2619. // buluCapacity(transOrder);
  2620. //}catch (Exception e){
  2621. // e.printStackTrace();
  2622. // log.error("补录车辆档案失败:"+e.getMessage());
  2623. //}
  2624. if("采购".equals(transOrder.get("businessScene"))){
  2625. //采购查询大宗补录卸货实绩
  2626. try{
  2627. findUnloadDetails(omsTransOrder,userName);
  2628. }catch (Exception e){
  2629. e.printStackTrace();
  2630. }
  2631. }
  2632. if("销售".equals(transOrder.get("businessScene"))){
  2633. //销售查询大宗补录装货实绩
  2634. try{
  2635. findLoadDetails(omsTransOrder,userName);
  2636. }catch (Exception e){
  2637. e.printStackTrace();
  2638. }
  2639. }
  2640. if("大宗销售订单".equals(transOrder.get("businessTypeName")) && (transOrder.get("materialName")+"").contains("复磅")){
  2641. //销售查询是否有同车号,业务类型为型钢销售订单、高线销售订单,未接单但有装货的运单,最近一条。迁移其他实绩
  2642. replaceResultSpecial(transOrder);
  2643. }
  2644. if (deleted.compareTo(new BigDecimal(4)) == 0 || deleted.compareTo(new BigDecimal(5)) == 0) {
  2645. //正在运行中的运单需要校验是否结束
  2646. if (endSeq.compareTo(BigDecimal.ZERO) > 0 && endSeq.compareTo(sequence) <= 0) {
  2647. //关闭运单
  2648. omsTransOrder.setDeleted(new BigDecimal(2));
  2649. omsTransOrder.setUpdateUsername(userName);
  2650. omsTransOrder.setUpdateTime(new Date());
  2651. //if (
  2652. // ("采购".equals(transOrder.get("businessScene")) && "自提".equals(transOrder.get("isSelfMention")))
  2653. // || ("销售".equals(transOrder.get("businessScene")) && "非自提".equals(transOrder.get("isSelfMention")))
  2654. // || ("生产".equals(transOrder.get("businessScene")))
  2655. //) {
  2656. // //调用结算接口生成详单
  2657. // //emsFeign.emsdetailsordersAdd(searchMap);
  2658. //}
  2659. }else{
  2660. //调整运单状态
  2661. omsTransOrder.setDeleted(new BigDecimal(5));
  2662. omsTransOrder.setUpdateUsername(userName);
  2663. omsTransOrder.setUpdateTime(new Date());
  2664. }
  2665. omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted());
  2666. }else if(deleted.compareTo(new BigDecimal(9)) == 0) {
  2667. //待执行运单变为已执行
  2668. if("出厂".equals(orderStatus)){
  2669. omsTransOrder.setDeleted(new BigDecimal(2));
  2670. }else{
  2671. omsTransOrder.setDeleted(new BigDecimal(5));
  2672. }
  2673. omsTransOrder.setUpdateUsername(userName);
  2674. omsTransOrder.setUpdateTime(new Date());
  2675. }
  2676. entityDispose.disposeOmsTransOrder(omsTransOrder);
  2677. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  2678. } catch (Exception e) {
  2679. e.printStackTrace();
  2680. log.error("更新运单状态失败:" + e.getMessage());
  2681. throw e;
  2682. }
  2683. return 0;
  2684. }
  2685. public List<Map<String, Object>> getDriverTotalResult(Map<String, Object> map) {
  2686. return omsTransOrderMapper.getDriverTotalResult(map);
  2687. }
  2688. public List<Map<String, Object>> getCapacityTotalResult(Map<String, Object> map) {
  2689. return omsTransOrderMapper.getCapacityTotalResult(map);
  2690. }
  2691. //新增WMS派车单需要信息
  2692. @TargetDataSource(dataSourceKey = DataSourceKey.DB_OTHER)
  2693. public int insertSlmDlivDirListByWMS(Map<String, Object> params) throws Exception {
  2694. int i = 0;
  2695. try {
  2696. if (params.size() == 0) {
  2697. throw new Exception("WMS数据为空!");
  2698. }
  2699. i = omsTransOrderMapper.insertSlmDlivDirListByWMS(params);
  2700. } catch (Exception e) {
  2701. log.error("同步WMS数据失败!", e);
  2702. throw new Exception("同步WMS数据失败!");
  2703. }
  2704. return i;
  2705. }
  2706. public String selectMax(int i) {
  2707. return omsOrderChildMapper.selectMax(i);
  2708. }
  2709. @Transactional(rollbackFor = Exception.class)
  2710. public String mergeTransOrder(Map<String, Object> map) throws Exception {
  2711. BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  2712. String userId = map.get("userId").toString();
  2713. String userName = map.get("userName").toString();
  2714. List<Map<String, Object>> list = (ArrayList) map.get("list");
  2715. if (list.size() <= 1) {
  2716. throw new Exception("合并至少需要两条运单!");
  2717. }
  2718. /**
  2719. * 仅允许同车号、同司机、同业务、未接收的运单合并,完全合并的运单不允许再合并。
  2720. * 1.查询所有分录
  2721. * 2.生成新的运单、新分录、新实绩
  2722. * 3.删除所有旧运单
  2723. */
  2724. Set<String> set = new HashSet<>();
  2725. BigDecimal capacityId = DataChange.dataToBigDecimal(list.get(0).get("capacityId"));
  2726. BigDecimal driverId = DataChange.dataToBigDecimal(list.get(0).get("driverId"));
  2727. BigDecimal driverId2 = DataChange.dataToBigDecimal(list.get(0).get("driverId2"));
  2728. BigDecimal orderType = DataChange.dataToBigDecimal(list.get(0).get("orderType"));
  2729. List<OmsTransOrder> omsTransOrders = new ArrayList<>();
  2730. List<OmsOrderChild> transOrderChildren = new ArrayList<>();
  2731. for (Map<String, Object> item : list) {
  2732. BigDecimal transOrderId = DataChange.dataToBigDecimal(item.get("transOrderId"));
  2733. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  2734. omsTransOrders.add(omsTransOrder);
  2735. if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) {
  2736. throw new Exception("仅允许合并'未确认'的运单!");
  2737. } else if (capacityId.compareTo(omsTransOrder.getCapacityId()) != 0) {
  2738. throw new Exception("仅允许合并同车号的运单!");
  2739. } else if (driverId.compareTo(omsTransOrder.getDriverId()) != 0
  2740. || driverId2.compareTo(omsTransOrder.getDriverId2()) != 0) {
  2741. throw new Exception("仅允许合并同司机的运单!");
  2742. } else if (orderType.compareTo(omsTransOrder.getOrderType()) != 0) {
  2743. throw new Exception("仅允许合并同业务的运单!");
  2744. }
  2745. if (set.contains("" + transOrderId)) {
  2746. continue;
  2747. } else {
  2748. set.add("" + transOrderId);
  2749. Map<String, Object> searchMap = new HashMap<>();
  2750. searchMap.put("transOrderId", transOrderId);
  2751. transOrderChildren.addAll(omsOrderChildMapper.selectByParameters(searchMap));
  2752. }
  2753. }
  2754. if (set.toArray().length == 1) {
  2755. throw new Exception("运单已合并,无需再次合并!");
  2756. }
  2757. //新运单
  2758. OmsTransOrder omsTransOrder = new OmsTransOrder();
  2759. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  2760. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  2761. omsTransOrder.getTransOrderId().intValue()));
  2762. omsTransOrder.setCapacityId(capacityId);
  2763. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  2764. omsTransOrder.setLineId(lineId);
  2765. omsTransOrder.setIssueTime(new Date());
  2766. omsTransOrder.setInsertTime(new Date());
  2767. omsTransOrder.setDeleted(new BigDecimal(4));
  2768. omsTransOrder.setInsertUsername(userName);
  2769. omsTransOrder.setInsertUpdateRemark("合并生成运单");
  2770. omsTransOrder.setDriverId(driverId);
  2771. omsTransOrder.setDriverId2(driverId2);
  2772. omsTransOrder.setOrderType(orderType);
  2773. omsTransOrder.setOrderStatus("等待执行");
  2774. map.put("transOrderId", omsTransOrder.getTransOrderId());
  2775. entityDispose.disposeOmsTransOrder(omsTransOrder);
  2776. omsTransOrderMapper.insertSelective(omsTransOrder);
  2777. //新分录
  2778. for (OmsOrderChild omsOrderChild : transOrderChildren) {
  2779. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  2780. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  2781. entityDispose.disposeOrderChild(omsOrderChild);
  2782. }
  2783. omsOrderChildMapper.batchInsert(transOrderChildren);
  2784. //新实绩
  2785. creatTransResult(lineId, omsTransOrder.getTransOrderId(),transOrderChildren.get(0).getPlanChildId(), userName);
  2786. //删除旧运单
  2787. String deleteReason = "合并至" + omsTransOrder.getSerialNumber();
  2788. for (OmsTransOrder item : omsTransOrders) {
  2789. item.setDeleted(BigDecimal.ONE);
  2790. item.setDeleteReason(deleteReason);
  2791. }
  2792. omsTransOrderMapper.batchUpdate(omsTransOrders);
  2793. return "合并成功!";
  2794. }
  2795. /**
  2796. * 生成运输实绩通用方法,单个生成
  2797. *
  2798. * @param lineId
  2799. * @param transOrderId
  2800. * @param userName
  2801. * @throws Exception
  2802. */
  2803. @Transactional(rollbackFor = Exception.class)
  2804. public void creatTransResult(BigDecimal lineId, BigDecimal transOrderId,BigDecimal planChildId, String userName) throws Exception{
  2805. //查询线路步骤
  2806. List<Map<String, Object>> steps = omsOrderChildMapper.findLineDetails(lineId);
  2807. //查询需求中的装货点卸货点
  2808. List<Map<String, Object>> loadUnloadPoints = omsOrderChildMapper.getRequireLoads(planChildId);
  2809. int loadIndex = 0,unloadIndex = 0;
  2810. //准备待新增的实绩
  2811. List<TmsReplaceFrontResult> tmsReplaceFrontResults = new ArrayList<>();
  2812. List<TmsSignInResult> tmsSignInResults = new ArrayList<>();
  2813. List<TmsEnfactoryResult> tmsEnfactoryResults = new ArrayList<>();
  2814. List<TmsOutfactoryResult> tmsOutfactoryResults = new ArrayList<>();
  2815. List<TmsLoadResult> tmsLoadResults = new ArrayList<>();
  2816. List<TmsUnloadResult> tmsUnloadResults = new ArrayList<>();
  2817. List<TmsWeightResult> tmsWeightResults = new ArrayList<>();
  2818. List<TmsQualityResult> tmsQualityResults = new ArrayList<>();
  2819. List<TmsArrivalResult> tmsArrivalResults = new ArrayList<>();
  2820. List<TmsReceiptResult> tmsReceiptResults = new ArrayList<>();
  2821. for (Map<String, Object> step : steps) {
  2822. switch (step.get("stepName").toString()) {
  2823. case "换车头":
  2824. TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult();
  2825. tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId());
  2826. tmsReplaceFrontResult.setTransOrderId(transOrderId);
  2827. tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2828. tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString());
  2829. tmsReplaceFrontResult.setInsertTime(new Date());
  2830. tmsReplaceFrontResult.setInsertUsername(userName);
  2831. tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO);
  2832. tmsReplaceFrontResults.add(tmsReplaceFrontResult);
  2833. break;
  2834. case "签到":
  2835. TmsSignInResult tmsSignInResult = new TmsSignInResult();
  2836. tmsSignInResult.setResultId(tmsSignInResultMapper.nextId());
  2837. tmsSignInResult.setTransOrderId(transOrderId);
  2838. tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2839. tmsSignInResult.setAlternateFields1(step.get("stepId").toString());
  2840. tmsSignInResult.setInsertTime(new Date());
  2841. tmsSignInResult.setInsertUsername(userName);
  2842. tmsSignInResult.setDeleted(BigDecimal.ZERO);
  2843. tmsSignInResults.add(tmsSignInResult);
  2844. break;
  2845. case "进厂":
  2846. TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult();
  2847. tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId());
  2848. tmsEnfactoryResult.setTransOrderId(transOrderId);
  2849. tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2850. tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString());
  2851. tmsEnfactoryResult.setInsertTime(new Date());
  2852. tmsEnfactoryResult.setInsertUsername(userName);
  2853. tmsEnfactoryResult.setDeleted(BigDecimal.ZERO);
  2854. tmsEnfactoryResults.add(tmsEnfactoryResult);
  2855. break;
  2856. case "出厂":
  2857. TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult();
  2858. tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId());
  2859. tmsOutfactoryResult.setTransOrderId(transOrderId);
  2860. tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2861. tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString());
  2862. tmsOutfactoryResult.setInsertTime(new Date());
  2863. tmsOutfactoryResult.setInsertUsername(userName);
  2864. tmsOutfactoryResult.setDeleted(BigDecimal.ZERO);
  2865. tmsOutfactoryResults.add(tmsOutfactoryResult);
  2866. break;
  2867. case "计毛":
  2868. case "计皮":
  2869. setWeightResult(tmsWeightResults, step, transOrderId, userName);
  2870. break;
  2871. case "装货":
  2872. TmsLoadResult tmsLoadResult = new TmsLoadResult();
  2873. tmsLoadResult.setResultId(tmsLoadResultMapper.nextId());
  2874. tmsLoadResult.setTransOrderId(transOrderId);
  2875. tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2876. try{
  2877. tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId")));
  2878. }catch (Exception e){
  2879. e.printStackTrace();
  2880. //throw new Exception("运输路线装货次数和运单不匹配");
  2881. }
  2882. tmsLoadResult.setAlternateFields1(step.get("stepId").toString());
  2883. tmsLoadResult.setInsertTime(new Date());
  2884. tmsLoadResult.setInsertUsername(userName);
  2885. tmsLoadResult.setDeleted(BigDecimal.ZERO);
  2886. tmsLoadResults.add(tmsLoadResult);
  2887. break;
  2888. case "卸货":
  2889. TmsUnloadResult tmsUnloadResult = new TmsUnloadResult();
  2890. tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId());
  2891. tmsUnloadResult.setTransOrderId(transOrderId);
  2892. tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2893. try{
  2894. tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId")));
  2895. }catch (Exception e){
  2896. throw new Exception("运输路线卸货次数和运单不匹配");
  2897. }
  2898. tmsUnloadResult.setAlternateFields1(step.get("stepId").toString());
  2899. tmsUnloadResult.setInsertTime(new Date());
  2900. tmsUnloadResult.setInsertUsername(userName);
  2901. tmsUnloadResult.setDeleted(BigDecimal.ZERO);
  2902. tmsUnloadResults.add(tmsUnloadResult);
  2903. break;
  2904. case "采样":
  2905. TmsQualityResult tmsQualityResult = new TmsQualityResult();
  2906. tmsQualityResult.setResultId(tmsQualityResultMapper.nextId());
  2907. tmsQualityResult.setTransOrderId(transOrderId);
  2908. tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2909. tmsQualityResult.setAlternateFields1(step.get("stepId").toString());
  2910. tmsQualityResult.setInsertTime(new Date());
  2911. tmsQualityResult.setInsertUsername(userName);
  2912. tmsQualityResult.setDeleted(BigDecimal.ZERO);
  2913. tmsQualityResults.add(tmsQualityResult);
  2914. break;
  2915. case "抵达":
  2916. TmsArrivalResult tmsArrivalResult = new TmsArrivalResult();
  2917. tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId());
  2918. tmsArrivalResult.setTransOrderId(transOrderId);
  2919. tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2920. tmsArrivalResult.setAlternateFields1(step.get("stepId").toString());
  2921. tmsArrivalResult.setInsertTime(new Date());
  2922. tmsArrivalResult.setInsertUsername(userName);
  2923. tmsArrivalResult.setDeleted(BigDecimal.ZERO);
  2924. tmsArrivalResults.add(tmsArrivalResult);
  2925. break;
  2926. case "签收":
  2927. TmsReceiptResult tmsReceiptResult = new TmsReceiptResult();
  2928. tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId());
  2929. tmsReceiptResult.setTransOrderId(transOrderId);
  2930. tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  2931. tmsReceiptResult.setAlternateFields1(step.get("stepId").toString());
  2932. tmsReceiptResult.setInsertTime(new Date());
  2933. tmsReceiptResult.setInsertUsername(userName);
  2934. tmsReceiptResult.setDeleted(BigDecimal.ZERO);
  2935. tmsReceiptResults.add(tmsReceiptResult);
  2936. break;
  2937. default:
  2938. log.error("生成步骤失败!无法解析的运输步骤:" + step.get("stepName"));
  2939. }
  2940. }
  2941. //新增各类实绩tmsSignInResults
  2942. if (tmsReplaceFrontResults.size() > 0) {
  2943. tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults);
  2944. }
  2945. if (tmsSignInResults.size() > 0) {
  2946. tmsSignInResultMapper.batchInsert(tmsSignInResults);
  2947. }
  2948. if (tmsEnfactoryResults.size() > 0) {
  2949. tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults);
  2950. }
  2951. if (tmsOutfactoryResults.size() > 0) {
  2952. tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults);
  2953. }
  2954. if (tmsWeightResults.size() > 0) {
  2955. tmsWeightResultMapper.batchInsert(tmsWeightResults);
  2956. }
  2957. if (tmsLoadResults.size() > 0) {
  2958. tmsLoadResultMapper.batchInsert(tmsLoadResults);
  2959. }
  2960. if (tmsUnloadResults.size() > 0) {
  2961. tmsUnloadResultMapper.batchInsert(tmsUnloadResults);
  2962. }
  2963. if (tmsQualityResults.size() > 0) {
  2964. tmsQualityResultMapper.batchInsert(tmsQualityResults);
  2965. }
  2966. if (tmsArrivalResults.size() > 0) {
  2967. tmsArrivalResultMapper.batchInsert(tmsArrivalResults);
  2968. }
  2969. if (tmsReceiptResults.size() > 0) {
  2970. tmsReceiptResultMapper.batchInsert(tmsReceiptResults);
  2971. }
  2972. }
  2973. /**
  2974. * 生成运输实绩通用方法,单个生成
  2975. *
  2976. * @param lineId
  2977. * @param transOrderId
  2978. * @param userName
  2979. * @throws Exception
  2980. */
  2981. @Transactional(rollbackFor = Exception.class)
  2982. public void creatTransResult(BigDecimal lineId, BigDecimal transOrderId,BigDecimal planChildId, String userName,Map<String,Object> map) throws Exception{
  2983. //查询线路步骤
  2984. List<Map<String, Object>> steps = omsOrderChildMapper.findLineDetails(lineId);
  2985. //查询需求中的装货点卸货点
  2986. List<Map<String, Object>> loadUnloadPoints = null;
  2987. if(map.get("loadUnloadPoints")!=null&&map.get("loadUnloadPoints") instanceof List){
  2988. loadUnloadPoints = (List<Map<String, Object>>) map.get("loadUnloadPoints");
  2989. }else {
  2990. loadUnloadPoints = omsOrderChildMapper.getRequireLoads(planChildId);
  2991. }
  2992. int loadIndex = 0,unloadIndex = 0;
  2993. //准备待新增的实绩
  2994. List<TmsReplaceFrontResult> tmsReplaceFrontResults = new ArrayList<>();
  2995. List<TmsSignInResult> tmsSignInResults = new ArrayList<>();
  2996. List<TmsEnfactoryResult> tmsEnfactoryResults = new ArrayList<>();
  2997. List<TmsOutfactoryResult> tmsOutfactoryResults = new ArrayList<>();
  2998. List<TmsLoadResult> tmsLoadResults = new ArrayList<>();
  2999. List<TmsUnloadResult> tmsUnloadResults = new ArrayList<>();
  3000. List<TmsWeightResult> tmsWeightResults = new ArrayList<>();
  3001. List<TmsQualityResult> tmsQualityResults = new ArrayList<>();
  3002. List<TmsArrivalResult> tmsArrivalResults = new ArrayList<>();
  3003. List<TmsReceiptResult> tmsReceiptResults = new ArrayList<>();
  3004. for (Map<String, Object> step : steps) {
  3005. switch (step.get("stepName").toString()) {
  3006. case "换车头":
  3007. TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult();
  3008. tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId());
  3009. tmsReplaceFrontResult.setTransOrderId(transOrderId);
  3010. tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3011. tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString());
  3012. tmsReplaceFrontResult.setInsertTime(new Date());
  3013. tmsReplaceFrontResult.setInsertUsername(userName);
  3014. tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO);
  3015. tmsReplaceFrontResults.add(tmsReplaceFrontResult);
  3016. break;
  3017. case "签到":
  3018. TmsSignInResult tmsSignInResult = new TmsSignInResult();
  3019. tmsSignInResult.setResultId(tmsSignInResultMapper.nextId());
  3020. tmsSignInResult.setTransOrderId(transOrderId);
  3021. tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3022. tmsSignInResult.setAlternateFields1(step.get("stepId").toString());
  3023. tmsSignInResult.setInsertTime(new Date());
  3024. tmsSignInResult.setInsertUsername(userName);
  3025. tmsSignInResult.setDeleted(BigDecimal.ZERO);
  3026. tmsSignInResults.add(tmsSignInResult);
  3027. break;
  3028. case "进厂":
  3029. TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult();
  3030. tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId());
  3031. tmsEnfactoryResult.setTransOrderId(transOrderId);
  3032. tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3033. tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString());
  3034. tmsEnfactoryResult.setInsertTime(new Date());
  3035. tmsEnfactoryResult.setInsertUsername(userName);
  3036. tmsEnfactoryResult.setDeleted(BigDecimal.ZERO);
  3037. tmsEnfactoryResults.add(tmsEnfactoryResult);
  3038. break;
  3039. case "出厂":
  3040. TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult();
  3041. tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId());
  3042. tmsOutfactoryResult.setTransOrderId(transOrderId);
  3043. tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3044. tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString());
  3045. tmsOutfactoryResult.setInsertTime(new Date());
  3046. tmsOutfactoryResult.setInsertUsername(userName);
  3047. tmsOutfactoryResult.setDeleted(BigDecimal.ZERO);
  3048. tmsOutfactoryResults.add(tmsOutfactoryResult);
  3049. break;
  3050. case "计毛":
  3051. case "计皮":
  3052. setWeightResult(tmsWeightResults, step, transOrderId, userName);
  3053. break;
  3054. case "装货":
  3055. TmsLoadResult tmsLoadResult = new TmsLoadResult();
  3056. tmsLoadResult.setResultId(tmsLoadResultMapper.nextId());
  3057. tmsLoadResult.setTransOrderId(transOrderId);
  3058. tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3059. try{
  3060. tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId")));
  3061. }catch (Exception e){
  3062. e.printStackTrace();
  3063. throw new Exception("运输路线装货次数和运单不匹配");
  3064. }
  3065. tmsLoadResult.setAlternateFields1(step.get("stepId").toString());
  3066. tmsLoadResult.setInsertTime(new Date());
  3067. tmsLoadResult.setInsertUsername(userName);
  3068. tmsLoadResult.setDeleted(BigDecimal.ZERO);
  3069. tmsLoadResults.add(tmsLoadResult);
  3070. break;
  3071. case "卸货":
  3072. TmsUnloadResult tmsUnloadResult = new TmsUnloadResult();
  3073. tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId());
  3074. tmsUnloadResult.setTransOrderId(transOrderId);
  3075. tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3076. try{
  3077. tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId")));
  3078. }catch (Exception e){
  3079. throw new Exception("运输路线卸货次数和运单不匹配");
  3080. }
  3081. tmsUnloadResult.setAlternateFields1(step.get("stepId").toString());
  3082. tmsUnloadResult.setInsertTime(new Date());
  3083. tmsUnloadResult.setInsertUsername(userName);
  3084. tmsUnloadResult.setDeleted(BigDecimal.ZERO);
  3085. tmsUnloadResults.add(tmsUnloadResult);
  3086. break;
  3087. case "采样":
  3088. TmsQualityResult tmsQualityResult = new TmsQualityResult();
  3089. tmsQualityResult.setResultId(tmsQualityResultMapper.nextId());
  3090. tmsQualityResult.setTransOrderId(transOrderId);
  3091. tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3092. tmsQualityResult.setAlternateFields1(step.get("stepId").toString());
  3093. tmsQualityResult.setInsertTime(new Date());
  3094. tmsQualityResult.setInsertUsername(userName);
  3095. tmsQualityResult.setDeleted(BigDecimal.ZERO);
  3096. tmsQualityResults.add(tmsQualityResult);
  3097. break;
  3098. case "抵达":
  3099. TmsArrivalResult tmsArrivalResult = new TmsArrivalResult();
  3100. tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId());
  3101. tmsArrivalResult.setTransOrderId(transOrderId);
  3102. tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3103. tmsArrivalResult.setAlternateFields1(step.get("stepId").toString());
  3104. tmsArrivalResult.setInsertTime(new Date());
  3105. tmsArrivalResult.setInsertUsername(userName);
  3106. tmsArrivalResult.setDeleted(BigDecimal.ZERO);
  3107. tmsArrivalResults.add(tmsArrivalResult);
  3108. break;
  3109. case "签收":
  3110. TmsReceiptResult tmsReceiptResult = new TmsReceiptResult();
  3111. tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId());
  3112. tmsReceiptResult.setTransOrderId(transOrderId);
  3113. tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq")));
  3114. tmsReceiptResult.setAlternateFields1(step.get("stepId").toString());
  3115. tmsReceiptResult.setInsertTime(new Date());
  3116. tmsReceiptResult.setInsertUsername(userName);
  3117. tmsReceiptResult.setDeleted(BigDecimal.ZERO);
  3118. tmsReceiptResults.add(tmsReceiptResult);
  3119. break;
  3120. default:
  3121. log.error("生成步骤失败!无法解析的运输步骤:" + step.get("stepName"));
  3122. }
  3123. }
  3124. //新增各类实绩tmsSignInResults
  3125. if (tmsReplaceFrontResults.size() > 0) {
  3126. tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults);
  3127. }
  3128. if (tmsSignInResults.size() > 0) {
  3129. tmsSignInResultMapper.batchInsert(tmsSignInResults);
  3130. }
  3131. if (tmsEnfactoryResults.size() > 0) {
  3132. tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults);
  3133. }
  3134. if (tmsOutfactoryResults.size() > 0) {
  3135. tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults);
  3136. }
  3137. if (tmsWeightResults.size() > 0) {
  3138. tmsWeightResultMapper.batchInsert(tmsWeightResults);
  3139. }
  3140. if (tmsLoadResults.size() > 0) {
  3141. tmsLoadResultMapper.batchInsert(tmsLoadResults);
  3142. }
  3143. if (tmsUnloadResults.size() > 0) {
  3144. tmsUnloadResultMapper.batchInsert(tmsUnloadResults);
  3145. }
  3146. if (tmsQualityResults.size() > 0) {
  3147. tmsQualityResultMapper.batchInsert(tmsQualityResults);
  3148. }
  3149. if (tmsArrivalResults.size() > 0) {
  3150. tmsArrivalResultMapper.batchInsert(tmsArrivalResults);
  3151. }
  3152. if (tmsReceiptResults.size() > 0) {
  3153. tmsReceiptResultMapper.batchInsert(tmsReceiptResults);
  3154. }
  3155. }
  3156. /**
  3157. * 派车推送大宗通用方法
  3158. * @param businessType
  3159. * @param capacityId
  3160. * @param driverId
  3161. * @param omsTransOrder
  3162. * @param omsOrderChild
  3163. * @param planDetails
  3164. * @throws Exception
  3165. */
  3166. public void dispatchPush(BigDecimal businessType,
  3167. BigDecimal capacityId,
  3168. BigDecimal driverId,
  3169. OmsTransOrder omsTransOrder,
  3170. OmsOrderChild omsOrderChild,
  3171. Map<String,Object> planDetails) throws Exception{
  3172. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3173. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(businessType);
  3174. Map<String, Object> capacity = omsTransOrderMapper.getCapacityById(capacityId);
  3175. Map<String, Object> driver = omsTransOrderMapper.getPersonnelById(driverId);
  3176. if(businessMap == null ){
  3177. throw new Exception("业务类型不存在!");
  3178. }else if(capacity == null){
  3179. throw new Exception("车辆不存在!");
  3180. }else if(driver == null){
  3181. throw new Exception("司机不存在!");
  3182. }
  3183. if("是".equals(capacity.get("capacityBlacklist"))) {
  3184. throw new Exception("不允许派发给黑名单车辆");
  3185. }
  3186. Map<String, Object> params = new HashMap<>();
  3187. Map<String, Object> paramsCapcity = new HashMap<>();
  3188. //推送车辆档案
  3189. if (!"生产".equals(businessMap.get("businessScene"))) {
  3190. Map<String, Object> capacityMes = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId());
  3191. Map<String, Object> driverMes = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
  3192. paramsCapcity.putAll(capacityMes);
  3193. paramsCapcity.putAll(driverMes);
  3194. daZongUtil.execute("30010000002", new Map[]{paramsCapcity});
  3195. }
  3196. switch (businessMap.get("businessScene").toString()) {
  3197. case "采购":
  3198. params.put("clbh", capacity.get("capacityNumber"));
  3199. params.put("cllx", capacity.get("capacityType"));
  3200. params.put("sjxm", driver.get("personnelName"));
  3201. params.put("sfzh", driver.get("identityCard"));
  3202. params.put("tel", driver.get("personnelPhone"));
  3203. params.put("wlbh", planDetails.get("materialCode"));
  3204. params.put("bmbh", planDetails.get("receiveSourceId"));
  3205. params.put("shbh", planDetails.get("supplierCompanyCode"));
  3206. params.put("fhbh", planDetails.get("carrierCode"));
  3207. params.put("ckbh", planDetails.get("receivingPointSourceId"));
  3208. params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3209. params.put("note", "");
  3210. params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3211. params.put("zsl", omsOrderChild.getMaterialNumber());
  3212. params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));
  3213. params.put("yfdj", "");//运费单价
  3214. params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  3215. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId"));
  3216. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId"));
  3217. params.put("ywbh", businessType);
  3218. params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date():omsOrderChild.getOriginDate()));
  3219. params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "":omsOrderChild.getOriginPoundNo());//原发磅单号
  3220. params.put("rjhh", omsTransOrder.getSerialNumber());
  3221. params.put("username", omsTransOrder.getInsertUsername());
  3222. params.put("wldh", planDetails.get("planNumber"));
  3223. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3224. params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码
  3225. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3226. params.put("pcbz",planDetails.get("pcbz") == null ? "" : planDetails.get("pcbz"));
  3227. params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString());
  3228. daZongUtil.execute("30010000017", new Map[]{params});
  3229. break;
  3230. case "销售":
  3231. params.put("clbh", capacity.get("capacityNumber"));
  3232. params.put("cllx", capacity.get("capacityType"));
  3233. params.put("sjxm", driver.get("personnelName"));
  3234. params.put("sfzh", driver.get("identityCard"));
  3235. params.put("tel", driver.get("personnelPhone"));
  3236. params.put("wlbh", planDetails.get("materialCode"));
  3237. params.put("bmbh", planDetails.get("receiveSourceId"));
  3238. params.put("shbh", planDetails.get("supplierCompanyCode"));
  3239. params.put("fhbh", planDetails.get("carrierCode") == null ? "" : planDetails.get("carrierCode"));
  3240. params.put("ckbh", planDetails.get("shippingPointSourceId") == null ? "" : planDetails.get("shippingPointSourceId"));
  3241. params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3242. params.put("note", "");
  3243. params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3244. params.put("zsl", omsOrderChild.getMaterialNumber());
  3245. params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice"));
  3246. params.put("yfdj", "");//运费单价
  3247. params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  3248. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId"));
  3249. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId"));
  3250. params.put("ywbh", businessType);
  3251. params.put("rjhh", omsTransOrder.getSerialNumber());
  3252. params.put("username", omsTransOrder.getInsertUsername());
  3253. params.put("wldh", planDetails.get("planNumber"));
  3254. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3255. params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码
  3256. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3257. params.put("bhdh","");
  3258. params.put("bhnm","");
  3259. params.put("isReplace","否");
  3260. daZongUtil.execute("30010000036", new Map[]{params});
  3261. break;
  3262. case "生产":
  3263. //params.put("clbh", capacity.get("capacityNumber"));
  3264. //params.put("cllx", capacity.get("capacityType"));
  3265. //params.put("sjxm", driver.get("personnelName"));
  3266. //params.put("sfzh", driver.get("identityCard"));
  3267. //params.put("tel", driver.get("personnelPhone"));
  3268. //params.put("wlbh", planDetails.get("materialCode"));
  3269. //params.put("bmbh", planDetails.get("receiveSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("receiveSourceId"));
  3270. //params.put("shbh", planDetails.get("supplierSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("supplierSourceId"));
  3271. //params.put("ckbh", planDetails.get("shippingPointSourceId"));
  3272. //params.put("fhbh", planDetails.get("carrierCode"));
  3273. //params.put("yrck", planDetails.get("receivingPointSourceId"));
  3274. //params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3275. //params.put("note", "");
  3276. //params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3277. //params.put("zsl", omsOrderChild.getMaterialNumber());
  3278. //params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));//含税单价
  3279. //params.put("yfdj", "");//运费单价
  3280. //params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  3281. //params.put("tdls", planDetails.get("transRequirementId"));
  3282. //params.put("tdfl", planDetails.get("requirementChildId"));
  3283. //params.put("ywbh", businessType);
  3284. //params.put("rjhh", omsTransOrder.getSerialNumber());
  3285. //params.put("username", omsTransOrder.getInsertUsername());
  3286. //params.put("wldh", planDetails.get("planNumber"));
  3287. //params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3288. //params.put("sfzhid", driver.get("innerCode") + "");//身份证内码
  3289. //params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3290. //daZongUtil.execute("30010000056", new Map[]{params});
  3291. break;
  3292. default:
  3293. throw new Exception("未知的业务类型!");
  3294. }
  3295. }
  3296. /**
  3297. * 派车推送大宗通用方法(必须已有运单后才能使用,并且运单数据中的关键字段未改动,否则查询不到正确的运单信息)
  3298. * @param transOrderId
  3299. * @throws Exception
  3300. */
  3301. public void dispatchPushById(BigDecimal transOrderId) throws Exception{
  3302. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3303. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  3304. if(omsTransOrder == null){
  3305. throw new Exception("未查询到运单!");
  3306. }
  3307. Map<String,Object> searchMap = new HashMap<>();
  3308. searchMap.put("transOrderId",transOrderId);
  3309. searchMap.put("deleted",0);
  3310. List<OmsOrderChild> omsOrderChilds = omsOrderChildMapper.selectByParameters(searchMap);
  3311. if(omsOrderChilds.size() == 0){
  3312. throw new Exception("未查询到运单子表!");
  3313. }
  3314. OmsOrderChild omsOrderChild = omsOrderChilds.get(0);
  3315. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType());
  3316. Map<String, Object> capacity = omsTransOrderMapper.getCapacityById(omsTransOrder.getCapacityId());
  3317. Map<String, Object> driver = omsTransOrderMapper.getPersonnelById(omsTransOrder.getDriverId());
  3318. Map<String,Object> planChildId = new HashMap<>();
  3319. planChildId.put("planChildId",omsOrderChild.getPlanChildId().toString());
  3320. Map<String,Object> planDetails = omsOrderChildMapper.findPlanChild(planChildId);
  3321. if(businessMap == null || businessMap.get("businessTypeName") == null){
  3322. throw new Exception("业务类型不存在!");
  3323. }else if(capacity == null){
  3324. throw new Exception("车辆不存在!");
  3325. }else if(driver == null){
  3326. throw new Exception("司机不存在!");
  3327. }else if(planDetails == null){
  3328. throw new Exception("计划不存在!");
  3329. }
  3330. if("是".equals(capacity.get("capacityBlacklist"))) {
  3331. throw new Exception("不允许派发给黑名单车辆");
  3332. }
  3333. Map<String, Object> params = new HashMap<>();
  3334. switch (businessMap.get("businessScene").toString()) {
  3335. case "采购":
  3336. params.put("clbh", capacity.get("capacityNumber"));
  3337. params.put("cllx", capacity.get("capacityType"));
  3338. params.put("sjxm", driver.get("personnelName"));
  3339. params.put("sfzh", driver.get("identityCard"));
  3340. params.put("tel", driver.get("personnelPhone"));
  3341. params.put("wlbh", planDetails.get("materialCode"));
  3342. params.put("bmbh", planDetails.get("receiveSourceId"));
  3343. params.put("shbh", planDetails.get("supplierCompanyCode"));
  3344. params.put("fhbh", planDetails.get("carrierCode"));
  3345. params.put("ckbh", planDetails.get("receivingPointSourceId"));
  3346. params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3347. params.put("note", "");
  3348. params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3349. params.put("zsl", omsOrderChild.getMaterialNumber());
  3350. params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));
  3351. params.put("yfdj", "");//运费单价
  3352. params.put("htbh", planDetails.get("orderNumber") == null ? "":planDetails.get("orderNumber"));
  3353. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId"));
  3354. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId"));
  3355. params.put("ywbh", omsTransOrder.getOrderType());
  3356. params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date():omsOrderChild.getOriginDate()));
  3357. params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "":omsOrderChild.getOriginPoundNo());//原发磅单号
  3358. params.put("rjhh", omsTransOrder.getSerialNumber());
  3359. params.put("username", omsTransOrder.getInsertUsername());
  3360. params.put("wldh", planDetails.get("planNumber"));
  3361. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3362. params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码
  3363. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3364. params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString());
  3365. daZongUtil.execute("30010000017", new Map[]{params});
  3366. break;
  3367. case "销售":
  3368. params.put("clbh", capacity.get("capacityNumber"));
  3369. params.put("cllx", capacity.get("capacityType"));
  3370. params.put("sjxm", driver.get("personnelName"));
  3371. params.put("sfzh", driver.get("identityCard"));
  3372. params.put("tel", driver.get("personnelPhone"));
  3373. params.put("wlbh", planDetails.get("materialCode"));
  3374. params.put("bmbh", planDetails.get("receiveSourceId"));
  3375. params.put("shbh", planDetails.get("supplierCompanyCode"));
  3376. params.put("fhbh", planDetails.get("carrierCode"));
  3377. params.put("ckbh", planDetails.get("shippingPointSourceId"));
  3378. params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3379. params.put("note", "");
  3380. params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3381. params.put("zsl", omsOrderChild.getMaterialNumber());
  3382. params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice"));
  3383. params.put("yfdj", "");//运费单价
  3384. params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  3385. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId"));
  3386. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId"));
  3387. params.put("ywbh", omsTransOrder.getOrderType());
  3388. params.put("rjhh", omsTransOrder.getSerialNumber());
  3389. params.put("username", omsTransOrder.getInsertUsername());
  3390. params.put("wldh", planDetails.get("planNumber"));
  3391. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3392. params.put("sfzhid", driver.get("innerCode"));//身份证内码
  3393. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3394. params.put("isReplace","否");
  3395. daZongUtil.execute("30010000036", new Map[]{params});
  3396. break;
  3397. case "生产":
  3398. //params.put("clbh", capacity.get("capacityNumber"));
  3399. //params.put("cllx", capacity.get("capacityType"));
  3400. //params.put("sjxm", driver.get("personnelName"));
  3401. //params.put("sfzh", driver.get("identityCard"));
  3402. //params.put("tel", driver.get("personnelPhone"));
  3403. //params.put("wlbh", planDetails.get("materialCode"));
  3404. //params.put("bmbh", planDetails.get("receiveSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("receiveSourceId"));
  3405. //params.put("shbh", planDetails.get("supplierSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("supplierSourceId"));
  3406. //params.put("ckbh", planDetails.get("shippingPointSourceId"));
  3407. //params.put("fhbh", planDetails.get("carrierCode"));
  3408. //params.put("yrck", planDetails.get("receivingPointSourceId"));
  3409. //params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd"));
  3410. //params.put("note", "");
  3411. //params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs());
  3412. //params.put("zsl", omsOrderChild.getMaterialNumber());
  3413. //params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));//含税单价
  3414. //params.put("yfdj", "");//运费单价
  3415. //params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  3416. //params.put("tdls", planDetails.get("transRequirementId"));
  3417. //params.put("tdfl", planDetails.get("requirementChildId"));
  3418. //params.put("ywbh", omsTransOrder.getOrderType());
  3419. //params.put("rjhh", omsTransOrder.getSerialNumber());
  3420. //params.put("username", omsTransOrder.getInsertUsername());
  3421. //params.put("wldh", planDetails.get("planNumber"));
  3422. //params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段
  3423. //params.put("sfzhid", driver.get("innerCode") + "");//身份证内码
  3424. //params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  3425. //daZongUtil.execute("30010000056", new Map[]{params});
  3426. break;
  3427. default:
  3428. throw new Exception("未知的业务类型!");
  3429. }
  3430. if (!"生产".equals(businessMap.get("businessScene"))){
  3431. //推送车辆档案
  3432. capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId());
  3433. driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
  3434. params = new HashMap<>();
  3435. params.putAll(capacity);
  3436. params.putAll(driver);
  3437. daZongUtil.execute("30010000002", new Map[]{params});
  3438. }
  3439. }
  3440. /**
  3441. * 非过磅车辆,通行登记单推送大宗
  3442. * @param omsTransOrder 包含driverId和capacityId
  3443. * @param sbddList 大宗门禁编号列表(01,02...);不控制门禁则传 ''
  3444. * @param startTime 起始时间
  3445. * @param endTime 截止时间
  3446. * @param txlx 通行卡分类:客运车辆 / 非道路运输车辆
  3447. * @param note 备注
  3448. */
  3449. public void accessPush(OmsTransOrder omsTransOrder,
  3450. String sbddList,
  3451. Date startTime,
  3452. Date endTime,
  3453. String txlx,
  3454. String note) throws Exception {
  3455. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3456. Map<String, Object> params = new HashMap<>();
  3457. params.put("rjhh",omsTransOrder.getSerialNumber());
  3458. Map<String, Object> capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId());
  3459. Map<String, Object> driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
  3460. params.putAll(capacity);
  3461. params.putAll(driver);
  3462. params.put("mjbh",sbddList);
  3463. params.put("qssj",dateFormat.format(startTime));
  3464. params.put("zzsj",dateFormat.format(endTime));
  3465. params.put("txlx",txlx);
  3466. params.put("note",note);
  3467. params.put("sfzhid",params.get("sfzhid") == null ? "" : params.get("sfzhid"));
  3468. params.put("username",omsTransOrder.getInsertUsername());
  3469. daZongUtil.execute("30010000070", new Map[]{params});
  3470. }
  3471. @Transactional(rollbackFor = Exception.class)
  3472. public Map<String, Object> dispatchTask(Map<String, Object> map) throws Exception {
  3473. //然后生成订单
  3474. //判断该需求是否有计划
  3475. BigDecimal requirementChildId = DataChange.dataToBigDecimal(map.get("requirementChildId"));
  3476. Map<String,Object> mapReC = new HashMap<>();
  3477. mapReC.put("requirementChildId",requirementChildId);
  3478. List<AmsPlanChild> amsPlanChildren = amsPlanChildMapper.selectByParameters(mapReC);
  3479. if(amsPlanChildren!=null&&amsPlanChildren.size()>0){
  3480. BigDecimal planChildId = amsPlanChildren.get(0).getPlanChildId();
  3481. map.put("planChildId",planChildId);
  3482. if(DataChange.dataToBigDecimal(map.get("businessType")).compareTo(new BigDecimal(129988)) == 0) {
  3483. String result = batchDispatchInnerGp(map);
  3484. }else{
  3485. String result = batchDispatchSc(map);
  3486. }
  3487. return map;
  3488. }
  3489. AmsTransPlan amsTransPlan = new AmsTransPlan();
  3490. BigDecimal planId = amsTransPlanMapper.nextId();
  3491. amsTransPlan.setTransPlanId(planId);
  3492. amsTransPlan.setSerialNumber("SCJH" + amsTransPlan.getTransPlanId().intValue());
  3493. amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId")));
  3494. amsTransPlan.setDeleted(BigDecimal.ZERO);
  3495. amsTransPlan.setTableName("AMS_TRANS_PLAN");
  3496. if (map.containsKey("insertUpdateRemark")) {
  3497. amsTransPlan.setInsertUpdateRemark(map.get("insertUpdateRemark").toString());
  3498. }
  3499. if (map.containsKey("secondaryCarrierId")) {
  3500. amsTransPlan.setSecondaryCarrierId(DataChange.dataToBigDecimal(map.get("secondaryCarrierId")));
  3501. }
  3502. amsTransPlan.setInsertUsername(map.get("userName").toString());
  3503. amsTransPlan.setInsertTime(new Date());
  3504. AmsPlanChild amsPlanChild = new AmsPlanChild();
  3505. BigDecimal planChildId = amsPlanChildMapper.nextId();
  3506. amsPlanChild.setPlanChildId(planChildId);
  3507. amsPlanChild.setTransPlanId(planId);
  3508. amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  3509. amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight")));
  3510. amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber")));
  3511. amsPlanChild.setTransTruckNumber(DataChange.dataToBigDecimal(map.get("transTruckNumber")));
  3512. amsPlanChild.setRequirementChildId(requirementChildId);
  3513. amsPlanChild.setDeleted(new BigDecimal(0));
  3514. amsPlanChild.setInsertUsername(map.get("userName").toString());
  3515. amsPlanChild.setInsertTime(new Date());
  3516. amsPlanChild.setTableName("AMS_PLAN_CHILD");
  3517. entityDispose.disposePlanChild(amsPlanChild);
  3518. entityDispose.disposeTransPlan(amsTransPlan);
  3519. amsTransPlanMapper.insertSelective(amsTransPlan);
  3520. amsPlanChildMapper.insertSelective(amsPlanChild);
  3521. map.put("planChildId", planChildId);
  3522. try {
  3523. if(DataChange.dataToBigDecimal(map.get("businessType")).compareTo(new BigDecimal(129988)) == 0) {
  3524. String result = batchDispatchInnerGp(map);
  3525. }else{
  3526. String result = batchDispatchSc(map);
  3527. }
  3528. } catch (Exception e) {
  3529. e.printStackTrace();
  3530. map.put("status", "failed");
  3531. map.put("errorMessage", e.getMessage());
  3532. throw e;
  3533. }
  3534. //更新需求状态为已制定计划4
  3535. int requirementStatus = 4;
  3536. amsTransPlanMapper.updateRequirementStatus(requirementChildId, requirementStatus);
  3537. ////推送到大宗
  3538. //String businessTypeName = (String) map.get("businessTypeName");
  3539. //if (businessTypeName != null && (businessTypeName.contains("计时") || businessTypeName.contains("计次"))) {
  3540. // return map;
  3541. //}
  3542. //推送大宗 计划取消推送大宗
  3543. //Map<String, Object> requirement = amsPlanChildMapper.selectLeftByChildId(amsPlanChild.getRequirementChildId());
  3544. //Map<String, Object> params = new HashMap<>();
  3545. //params.put("wldh", amsTransPlan.getSerialNumber());
  3546. //params.put("tdls", requirement.get("transRequirementId"));
  3547. //params.put("tdfl", requirement.get("requirementChildId"));
  3548. //params.put("tzdh", requirement.get("requirementNumber"));
  3549. //params.put("ddbh", requirement.get("orderNumber") == null ? "" : requirement.get("orderNumber"));
  3550. //params.put("bmbh", requirement.get("receiveSourceId") == null ? "" : requirement.get("receiveSourceId"));
  3551. //params.put("bmmc", requirement.get("receiveCompanyName") == null ? "" : requirement.get("receiveCompanyName"));
  3552. //DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
  3553. //params.put("zdrq", dateFormat.format(amsTransPlan.getInsertTime()));
  3554. //dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3555. //params.put("qsrq", dateFormat.format(amsTransPlan.getInsertTime()));
  3556. //params.put("zzrq", dateFormat.format(requirement.get("dueTime")));
  3557. //params.put("dwbh", requirement.get("supplierCompanyCode") == null ? "" : requirement.get("supplierCompanyCode"));
  3558. //params.put("dwmc", requirement.get("supplierCompanyName") == null ? "" : requirement.get("supplierCompanyName"));
  3559. //params.put("wlbh", requirement.get("materialCode"));
  3560. //params.put("wlmc", requirement.get("materialName"));
  3561. //String ggxh = "";
  3562. //if (requirement.get("materialSpecification") != null && requirement.get("materialModel") != null) {
  3563. // ggxh = requirement.get("materialSpecification") + "-" + requirement.get("materialModel");
  3564. //} else if (requirement.get("materialSpecification") != null) {
  3565. // ggxh = requirement.get("materialSpecification").toString();
  3566. //} else if (requirement.get("materialModel") != null) {
  3567. // ggxh = requirement.get("materialModel").toString();
  3568. //}
  3569. //params.put("ggxh", ggxh);
  3570. //params.put("ckbh", requirement.get("shippingPointSourceId") == null ? "" : requirement.get("shippingPointSourceId"));
  3571. //params.put("ckmc", requirement.get("shippingPointName") == null ? "" : requirement.get("shippingPointName"));
  3572. //params.put("yrck", requirement.get("receivingPointSourceId") == null ? "" : requirement.get("receivingPointSourceId"));
  3573. //params.put("yrmc", requirement.get("receivingPointName") == null ? "" : requirement.get("receivingPointName"));
  3574. //params.put("sysl", requirement.get("materialNumber"));
  3575. //params.put("zjs", 0);
  3576. //params.put("dj", requirement.get("unitPrice") == null ? 0 : requirement.get("unitPrice"));
  3577. //params.put("ywbh", requirement.get("businessType"));
  3578. //params.put("fhdd", requirement.get("fhdd") == null ? "" : requirement.get("fhdd"));
  3579. //params.put("zdxm", amsTransPlan.getInsertUsername());
  3580. //params.put("note", amsTransPlan.getInsertUpdateRemark() == null ? "" : amsTransPlan.getInsertUpdateRemark());
  3581. //params.put("ts", "" + dateFormat.format(amsTransPlan.getInsertTime()));
  3582. //Map<String, Object> carrier = omsTransOrderMapper.findCompanyById(amsTransPlan.getCarrierId().toString());
  3583. //params.put("ysbh", carrier.get("companyCode") == null ? "" : carrier.get("companyCode"));
  3584. //params.put("ysdw", carrier.get("companyName") == null ? "" : carrier.get("companyName"));
  3585. //params.put("jhsl", amsPlanChild.getMaterialNumber());
  3586. //params.put("jhjs", 0);
  3587. //params.put("jhcs", amsPlanChild.getTransTruckNumber());
  3588. //daZongUtil.execute("30010000054", new Map[]{params});
  3589. return map;
  3590. }
  3591. //根据派车单号删除WMS派车单
  3592. @TargetDataSource(dataSourceKey = DataSourceKey.DB_OTHER)
  3593. public String deleteSlmDlivDirListByDlivDirnoSeq(String dlivDirnoSeq) throws Exception {
  3594. try {
  3595. //查询WMS中是否有改派车单号
  3596. Integer integer2 = omsTransOrderMapper.selectSlmDlivDir(dlivDirnoSeq);
  3597. if (integer2 == 0) {
  3598. return "WMS中不存在派车单号:" + dlivDirnoSeq;
  3599. }
  3600. //查询WMS派车单中是否有条码
  3601. Integer integer = omsTransOrderMapper.selectDlivDirnoSeqCount(dlivDirnoSeq);
  3602. if (integer > 0) {
  3603. return "派车单在WMS中已扫入条码!";
  3604. }
  3605. //根据派车单号删除WMS中的派车单
  3606. Integer integer1 = omsTransOrderMapper.deleteSlmDlivDirListByDlivDirnoSeq(dlivDirnoSeq);
  3607. if (integer1 == 0) {
  3608. throw new Exception("删除WMS中派车单失败!");
  3609. }
  3610. } catch (Exception e) {
  3611. throw new Exception(e.getMessage());
  3612. }
  3613. return "OK";
  3614. }
  3615. //获取销售派车单信息
  3616. public Map<String, Object> getDlivDirnoSeqList(String id) {
  3617. Map<String, Object> dlivDirnoSeqList = omsTransOrderMapper.getDlivDirnoSeqList(id);
  3618. return dlivDirnoSeqList;
  3619. }
  3620. //修改销售派车单信息
  3621. @Transactional(rollbackFor = Exception.class)
  3622. public Map<String, Object> updateDlivDirnoSeq(Map<String, Object> map) throws Exception {
  3623. try {
  3624. //获取要修改的运单子表数据
  3625. BigDecimal planChildId = DataChange.dataToBigDecimal(map.get("planChildId"));
  3626. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(planChildId);
  3627. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(omsOrderChild.getTransOrderId());
  3628. if (omsTransOrder.getDeleted().compareTo(DataChange.dataToBigDecimal(4)) != 0) {
  3629. throw new Exception("只能在未确认状态下修改!");
  3630. }
  3631. List<Map<String, Object>> children = (List<Map<String, Object>>) map.get("children");
  3632. Map<String, Object> child = children.get(0);
  3633. //获取物资ID
  3634. BigDecimal materialId = omsTransOrderMapper.getMaterialId(child.get("prodName").toString(), child.get("prodCode").toString());
  3635. omsOrderChild.setMaterialId(materialId);
  3636. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(child.get("planWeight")));
  3637. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(child.get("planNumber")));
  3638. omsOrderChild.setUpdateTime(new Date());
  3639. omsOrderChild.setUpdateUsername(map.get("userId").toString());
  3640. omsOrderChild.setAlternateFields3(map.get("position").toString());
  3641. //获取装货点-仓库Id
  3642. String storageattr = omsTransOrderMapper.findOperationByOperationName(map.get("storageattr").toString());
  3643. omsOrderChild.setAlternateFields2(storageattr);//发货仓库
  3644. omsOrderChild.setInsertUpdateRemark(map.get("memo").toString());
  3645. //获取运单表信息
  3646. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
  3647. omsTransOrder.setDriverId(DataChange.dataToBigDecimal(map.get("driverId")));
  3648. omsTransOrder.setLineId(DataChange.dataToBigDecimal(child.get("lineId")));
  3649. omsTransOrder.setUpdateTime(new Date());
  3650. omsTransOrder.setUpdateUsername(map.get("userId").toString());
  3651. omsTransOrderMapper.updateByPrimaryKey(omsTransOrder);
  3652. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  3653. AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId());
  3654. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId());
  3655. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  3656. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  3657. List<String> dlivDirnoSeqList = new ArrayList<>();
  3658. if ((businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("安泰高线销售")
  3659. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))
  3660. && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) {
  3661. dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1());
  3662. }
  3663. if (dlivDirnoSeqList.size() > 0) {
  3664. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  3665. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdate";
  3666. wmsUtil.executeArray("90010000006", listMap, map.get("accessToken").toString(), url);
  3667. }
  3668. } catch (Exception e) {
  3669. throw new Exception(e.getMessage());
  3670. }
  3671. return map;
  3672. }
  3673. public List<Map<String, Object>> selectDlivDirnoSeqDetails(Map<String, Object> map) {
  3674. List<Map<String, Object>>params = omsTransOrderMapper.selectDlivDirnoSeqDetails(map);
  3675. return params;
  3676. }
  3677. @Transactional(rollbackFor = Exception.class)
  3678. public Map<String, Object> matchLineAndCreatResult(Map<String, Object> map) throws Exception {
  3679. BigDecimal transOrderId = DataChange.dataToBigDecimal(map.get("transOrderId").toString());
  3680. BigDecimal planChildId = DataChange.dataToBigDecimal(map.get("planChildId").toString());
  3681. BigDecimal businessTypeId = DataChange.dataToBigDecimal(map.get("businessTypeId").toString());
  3682. BigDecimal materialTypeId = DataChange.dataToBigDecimal(map.get("materialTypeId"));
  3683. BigDecimal businessNameId = DataChange.dataToBigDecimal(map.get("businessNameId"));
  3684. BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
  3685. BigDecimal loadPointId = DataChange.dataToBigDecimal(map.get("loadPointId"));
  3686. BigDecimal unloadPointId = DataChange.dataToBigDecimal(map.get("unloadPointId"));
  3687. BigDecimal consigneeId = DataChange.dataToBigDecimal(map.get("consigneeId"));
  3688. BigDecimal lineId;
  3689. if (map.containsKey("lineId") && map.get("lineId") != null) {
  3690. lineId = DataChange.dataToBigDecimal(map.get("lineId"));
  3691. } else {
  3692. lineId = omsTransOrderMapper.matchLineId(businessTypeId, materialTypeId, businessNameId, materialId, loadPointId, unloadPointId, consigneeId);
  3693. if (lineId == null || lineId.compareTo(BigDecimal.ZERO) == 0) {
  3694. throw new Exception("没有对应的运输路径,请维护运输路径,或新增对应匹配规则!");
  3695. }
  3696. }
  3697. //根据运输路线创建实绩
  3698. creatTransResult(lineId, transOrderId,planChildId, map.get("userName").toString());
  3699. //返回个lineId看看
  3700. map.put("lineId", lineId);
  3701. return map;
  3702. }
  3703. public Integer updateOrderSeqAddOne(BigDecimal transOrderId) {
  3704. return omsTransOrderMapper.updateOrderSeqAddOne(transOrderId);
  3705. }
  3706. @Transactional(rollbackFor = Exception.class)
  3707. public synchronized String saleDispatchList(Map<String, Object> map) throws Exception {
  3708. //效验是否超重量
  3709. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("requirementChildId")));
  3710. if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) != 0 && amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) != 0) {
  3711. throw new Exception("该状态下不允许发货!");
  3712. }
  3713. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  3714. List<Map<String, Object>> listMpa = (ArrayList) map.get("list");
  3715. BigDecimal weight = DataChange.dataToBigDecimal(0);
  3716. BigDecimal number = DataChange.dataToBigDecimal(0);
  3717. for (Map<String, Object> params : listMpa) {
  3718. weight = weight.add(DataChange.dataToBigDecimal(params.get("materialWeight")));
  3719. number = number.add(DataChange.dataToBigDecimal(params.get("materialNumber")));
  3720. }
  3721. if (weight.compareTo(amsRequirementChild.getMaterialNumber()) == 1) {
  3722. throw new Exception("物资重量超出计划重量!");
  3723. }
  3724. //如果派车时是允许发货,就改变状态为正在执行,否则就不改
  3725. if (amsRequirementChild.getDeleted().compareTo(DataChange.dataToBigDecimal(7)) == 0) {
  3726. amsRequirementChild.setDeleted(DataChange.dataToBigDecimal(8));
  3727. amsRequirementChildMapper.updateByPrimaryKey(amsRequirementChild);
  3728. }
  3729. //新增派车记录
  3730. List<AmsTransPlan> amsTransPlanList = new ArrayList<>();
  3731. List<AmsPlanChild> amsPlanChildList = new ArrayList<>();
  3732. List<OmsTransOrder> omsTransOrderList = new ArrayList();
  3733. List<OmsOrderChild> omsOrderChildList = new ArrayList();
  3734. List<TmsLoadResult> tmsLoadResultList = new ArrayList<>();
  3735. List<String> dlivDirnoSeqList = new ArrayList<>();
  3736. //获取运输类型
  3737. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  3738. int j = 1;
  3739. for (Map<String, Object> list : listMpa) {
  3740. //增加需求计划记录
  3741. //主表
  3742. AmsTransPlan amsTransPlan = new AmsTransPlan();
  3743. amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId());
  3744. amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue()));
  3745. amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId")));
  3746. amsTransPlan.setInsertUsername(map.get("userName").toString());
  3747. amsTransPlan.setInsertTime(new Date());
  3748. amsTransPlan.setDeleted(DataChange.dataToBigDecimal(4));
  3749. amsTransPlan.setAlternateFields1("否");
  3750. amsTransPlan.setAlternateFields2(map.get("loadPointId").toString());
  3751. amsTransPlan.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark());
  3752. amsTransPlan.setTableName("AMS_TRANS_PLAN");
  3753. entityDispose.disposeTransPlan(amsTransPlan);
  3754. amsTransPlanList.add(amsTransPlan);
  3755. //子表
  3756. AmsPlanChild amsPlanChild = new AmsPlanChild();
  3757. amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId());
  3758. amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId());
  3759. amsPlanChild.setRequirementChildId(amsRequirementChild.getRequirementChildId());
  3760. amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  3761. amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(list.get("materialWeight")));
  3762. amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(list.get("materialNumber")));
  3763. amsPlanChild.setTransTruckNumber(DataChange.dataToBigDecimal(1));
  3764. amsPlanChild.setDeleted(DataChange.dataToBigDecimal(0));
  3765. amsPlanChild.setInsertUsername(map.get("userName").toString());
  3766. amsPlanChild.setInsertTime(new Date());
  3767. entityDispose.disposePlanChild(amsPlanChild);
  3768. amsPlanChildList.add(amsPlanChild);
  3769. OmsTransOrder omsTransOrder = new OmsTransOrder();
  3770. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  3771. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  3772. omsTransOrder.getTransOrderId().intValue()));
  3773. if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(0)) == 0) {
  3774. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(list.get("capacityId")));
  3775. } else {
  3776. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(list.get("capacityNumber")));
  3777. }
  3778. omsTransOrder.setDriverId(DataChange.dataToBigDecimal(list.get("driverId")));
  3779. omsTransOrder.setOrderType(amsTransRequirement.getBusinessType());
  3780. omsTransOrder.setIssueTime(new Date());
  3781. omsTransOrder.setInsertUsername(map.get("userName").toString());
  3782. omsTransOrder.setInsertTime(new Date());
  3783. omsTransOrder.setDeleted(DataChange.dataToBigDecimal(4));
  3784. omsTransOrder.setInsertUpdateRemark(list.get("remark") == null || list.get("remark").equals("") ? amsRequirementChild.getInsertUpdateRemark() : list.get("remark").toString());
  3785. omsTransOrder.setCurrentLineSeq(DataChange.dataToBigDecimal(0));
  3786. OmsOrderChild omsOrderChild = new OmsOrderChild();
  3787. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  3788. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  3789. omsOrderChild.setPlanChildId(amsPlanChild.getPlanChildId());
  3790. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId")));
  3791. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(list.get("materialNumber")));
  3792. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(list.get("materialWeight")));
  3793. omsOrderChild.setInsertTime(new Date());
  3794. omsOrderChild.setInsertUsername(map.get("userName").toString());
  3795. omsOrderChild.setDeleted(DataChange.dataToBigDecimal(0));
  3796. omsOrderChild.setAlternateFields7("1");
  3797. omsOrderChild.setInsertUpdateRemark(list.get("remark") == null || list.get("remark").equals("") ? amsRequirementChild.getInsertUpdateRemark() : list.get("remark").toString());
  3798. omsOrderChild.setAlternateFields1(omsTransOrderMapper.selectMax(j));
  3799. j++;
  3800. if ((businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("安泰高线销售")
  3801. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))
  3802. && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) {
  3803. dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1());
  3804. }
  3805. omsOrderChild.setAlternateFields2(map.get("loadPointId").toString());
  3806. //如果是火运,需要添加货位
  3807. if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(1)) == 0) {
  3808. omsOrderChild.setAlternateFields3(list.get("allocation").toString());
  3809. }
  3810. //汽运需要新增各类实绩
  3811. if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(0)) == 0) {
  3812. //查询物资及物资大类信息
  3813. Map<String, Object> materialMap = new HashMap<>();
  3814. materialMap.put("materialId", omsOrderChild.getMaterialId());
  3815. Map<String, Object> materialType = omsTransOrderMapper.getMaterialInfo(materialMap);
  3816. if (materialType == null) {
  3817. materialType = new HashMap<>();
  3818. }
  3819. //匹配路线新增各类实绩
  3820. Map<String, Object> lineMap = new HashMap<>();
  3821. lineMap.put("planChildId", amsPlanChild.getPlanChildId());
  3822. lineMap.put("businessTypeId", omsTransOrder.getOrderType());
  3823. lineMap.put("transOrderId", omsTransOrder.getTransOrderId());
  3824. lineMap.put("materialTypeId", DataChange.dataToBigDecimal(materialType.get("materialTypeId")));
  3825. lineMap.put("businessNameId", amsRequirementChild.getOperationsNameId());
  3826. lineMap.put("materialId", omsOrderChild.getMaterialId());
  3827. lineMap.put("loadPointId", map.get("loadPointId").toString());
  3828. lineMap.put("consigneeId", amsTransRequirement.getReceivingCompanyId());
  3829. lineMap.put("userName", map.get("userName").toString());
  3830. lineMap.put("lineId", amsTransRequirement.getLineId());
  3831. Map<String, Object> objectMap = matchLineAndCreatResult(lineMap);
  3832. omsTransOrder.setLineId(DataChange.dataToBigDecimal(objectMap.get("lineId")));
  3833. } else {
  3834. //火运只需要装货实绩
  3835. TmsLoadResult tmsLoadResult = new TmsLoadResult();
  3836. tmsLoadResult.setResultId(tmsLoadResultMapper.nextId());
  3837. tmsLoadResult.setTransOrderId(omsTransOrder.getTransOrderId());
  3838. tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(map.get("loadPointId").toString()));
  3839. tmsLoadResult.setInsertTime(new Date());
  3840. tmsLoadResult.setInsertUsername(map.get("userName").toString());
  3841. tmsLoadResult.setDeleted(BigDecimal.ZERO);
  3842. tmsLoadResultMapper.insert(tmsLoadResult);
  3843. }
  3844. entityDispose.disposeOmsTransOrder(omsTransOrder);
  3845. entityDispose.disposeOrderChild(omsOrderChild);
  3846. omsTransOrderList.add(omsTransOrder);
  3847. omsOrderChildList.add(omsOrderChild);
  3848. }
  3849. amsTransPlanMapper.batchInsert(amsTransPlanList);
  3850. amsPlanChildMapper.batchInsert(amsPlanChildList);
  3851. omsTransOrderMapper.batchInsert(omsTransOrderList);
  3852. omsOrderChildMapper.batchInsert(omsOrderChildList);
  3853. sumWeight(amsRequirementChild.getRequirementChildId());
  3854. for(AmsPlanChild amsPlanChild : amsPlanChildList) {
  3855. sumWeightPlan(amsPlanChild.getPlanChildId());
  3856. }
  3857. if ((businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售")
  3858. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))
  3859. && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) {
  3860. BigDecimal sumWeight = new BigDecimal(0);
  3861. //修改发运通知单记录表
  3862. HashMap<String, Object> dlivDirnoMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1());
  3863. sumWeight = DataChange.dataToBigDecimal(dlivDirnoMap.get("outweight")).add(weight);
  3864. HashMap<String, Object> hashMap = new HashMap<>();
  3865. hashMap.put("dlivDirno", amsRequirementChild.getAlternateFields1());
  3866. hashMap.put("outweight", sumWeight);
  3867. amsTransRequirementMapper.updatedlivDirNo(hashMap);
  3868. }
  3869. //推送WMS派车单
  3870. if (dlivDirnoSeqList.size() > 0) {
  3871. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  3872. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd";
  3873. try {
  3874. wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url);
  3875. } catch (Exception e) {
  3876. //如果出现报错需要删除掉wms的派车单
  3877. url = "/antai.maketx/v1/slmdlivdirlists/wuliuDel";
  3878. for (Map<String, Object> dlivDirnoSeqMap : listMap) {
  3879. Map<String, Object> paramsMap = new HashMap<>();
  3880. paramsMap.put("id", dlivDirnoSeqMap.get("dlivDirnoSeq"));
  3881. wmsUtil.executeObject("90010000005", paramsMap, map.get("accessToken").toString(), url);
  3882. }
  3883. throw new Exception("派车失败!" + e.getMessage());
  3884. }
  3885. }
  3886. return "派车成功!";
  3887. }
  3888. /*
  3889. 迁移实绩,销售特殊业务专用
  3890. 销售查询是否有同车号,业务类型为型钢销售订单、高线销售订单,未接单但有装货的运单,最近一条。迁移其他实绩
  3891. */
  3892. void replaceResultSpecial(Map<String,Object> transOrder){
  3893. try{
  3894. replaceResult(DataChange.dataToBigDecimal(transOrder.get("transOrderId")));
  3895. }catch (Exception e){
  3896. e.printStackTrace();
  3897. log.error("销售特殊业务迁移实绩失败:"+e.getMessage());
  3898. }
  3899. }
  3900. /**
  3901. * 迁移实绩,源运单和目标运单的运输步骤流程需要完全一致
  3902. * @param originTransOrderId
  3903. * @throws Exception
  3904. */
  3905. void replaceResult(BigDecimal originTransOrderId) throws Exception{
  3906. //查询原运单所有实绩
  3907. Map<String, Object> searchMap_origin = new HashMap<>();
  3908. searchMap_origin.put("transOrderId", originTransOrderId);
  3909. searchMap_origin.put("deleted", 0);
  3910. List<TmsWeightResult> tmsWeightResultsOrigin = tmsWeightResultMapper.selectByParameters(searchMap_origin);
  3911. List<TmsWeightResult> tmsWeightResultsTarget = new ArrayList<>();
  3912. List<OmsOrderChild> omsOrderChildren = new ArrayList<>();
  3913. //遍历旧实绩迁移
  3914. if (tmsWeightResultsOrigin.size() > 0) {
  3915. for (int i = 0; i < tmsWeightResultsOrigin.size(); i++) {
  3916. TmsWeightResult itemOrigin = tmsWeightResultsOrigin.get(i);
  3917. Map<String, Object> searchMap = new HashMap<>();
  3918. Map<String, Object> orderMap = new HashMap<>();
  3919. if (itemOrigin.getNetWeight() == null || itemOrigin.getNetWeightTime() == null) {
  3920. continue;
  3921. }
  3922. if (itemOrigin.getAlternateFields10() == null) {
  3923. continue;
  3924. }
  3925. searchMap.put("alternateFields9",itemOrigin.getTransOrderId());
  3926. searchMap.put("alternateFields10",itemOrigin.getResultId());
  3927. List<TmsWeightResult> tmsWeightResultLoad = tmsWeightResultMapper.selectByParametersSt(searchMap);
  3928. if (tmsWeightResultLoad.size() == 0 || tmsWeightResultLoad.get(0) == null) {
  3929. continue;
  3930. }
  3931. int j = 1;
  3932. int loadWeightSize = tmsWeightResultLoad.size();
  3933. for (TmsWeightResult itemTarget : tmsWeightResultLoad) {
  3934. //创建条码运单子表
  3935. //根据条码计重实绩获取运单数据
  3936. orderMap.put("transOrderId",itemTarget.getTransOrderId());
  3937. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(orderMap).get(0);
  3938. if(omsOrderChild.getActualWeight().compareTo(BigDecimal.ZERO) <= 0) {
  3939. continue;
  3940. }
  3941. itemTarget.setTransOrderChildId(omsOrderChild.getOrderChildId());
  3942. itemTarget.setPoundNo(itemOrigin.getPoundNo());
  3943. itemTarget.setGrossWeightTime(itemOrigin.getGrossWeightTime());
  3944. itemTarget.setGrossPlaceId(itemOrigin.getGrossPlaceId());
  3945. itemTarget.setTareWeightTime(itemOrigin.getTareWeightTime());
  3946. itemTarget.setTarePlaceId(itemOrigin.getTarePlaceId());
  3947. itemTarget.setNetWeightTime(itemOrigin.getNetWeightTime());
  3948. itemTarget.setNetWeight(itemOrigin.getNetWeight());
  3949. itemTarget.setResultImage(itemOrigin.getResultImage());
  3950. itemTarget.setAlternateFields6(itemOrigin.getAlternateFields6());
  3951. omsOrderChild.setNetWeightTime(itemTarget.getNetWeightTime());
  3952. omsOrderChild.setTareWeightTime(itemTarget.getTareWeightTime());
  3953. omsOrderChild.setGrossWeightTime(itemTarget.getGrossWeightTime());
  3954. omsOrderChild.setNetWeight(itemOrigin.getNetWeight());
  3955. itemTarget.setTareWeight(itemOrigin.getTareWeight());
  3956. itemTarget.setGrossWeight(itemOrigin.getGrossWeight());
  3957. itemTarget.setNetWeight(itemOrigin.getNetWeight());
  3958. omsOrderChild.setNetWeight(itemOrigin.getNetWeight());
  3959. //获取条码运单的计重实绩进行更新
  3960. j++;
  3961. tmsWeightResultsTarget.add(itemTarget);
  3962. omsOrderChildren.add(omsOrderChild);
  3963. }
  3964. }
  3965. }
  3966. int result = 0;
  3967. if (tmsWeightResultsTarget.size() > 0) {
  3968. result = tmsWeightResultMapper.batchUpdate(tmsWeightResultsTarget);
  3969. omsOrderChildMapper.batchUpdate(omsOrderChildren);
  3970. }
  3971. log.info("replaceResult origin:"+originTransOrderId);
  3972. }
  3973. //多拼新增销售发运通知单
  3974. @Transactional(rollbackFor = Exception.class)
  3975. public String saleDispatchDuoPin(Map<String, Object> map) throws Exception {
  3976. List<Map<String, Object>> mapList = (ArrayList) map.get("list");
  3977. List<AmsTransPlan> transPlanList = new ArrayList<>();
  3978. List<AmsPlanChild> planChildList = new ArrayList<>();
  3979. List<OmsTransOrder> transOrderList = new ArrayList<>();
  3980. List<OmsOrderChild> orderChildList = new ArrayList<>();
  3981. List<String> dlivDirnoSeqList = new ArrayList<>();
  3982. int i = 1;
  3983. for (Map<String, Object> maps : mapList) {
  3984. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(maps.get("requirementChildId")));
  3985. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  3986. if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) != 0 && amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) != 0) {
  3987. throw new Exception("状态不对,不允许发货!");
  3988. }
  3989. if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) == 0) {
  3990. amsRequirementChild.setDeleted(new BigDecimal(8));
  3991. amsRequirementChildMapper.updateByPrimaryKey(amsRequirementChild);
  3992. }
  3993. //是否超出计划重量
  3994. if (DataChange.dataToBigDecimal(maps.get("residueweight")).compareTo(DataChange.dataToBigDecimal(maps.get("materialWeight"))) == -1) {
  3995. throw new Exception("发货重量大于剩余重量!");
  3996. }
  3997. //增加计划住表记录
  3998. AmsTransPlan amsTransPlan = new AmsTransPlan();
  3999. amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId());
  4000. amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue()));
  4001. amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId")));
  4002. amsTransPlan.setInsertTime(new Date());
  4003. amsTransPlan.setInsertUsername(map.get("userName").toString());
  4004. amsTransPlan.setDeleted(new BigDecimal(4));
  4005. amsTransPlan.setAlternateFields1("是");
  4006. amsTransPlan.setAlternateFields2(map.get("loadPointId").toString());
  4007. amsTransPlan.setTableName("AMS_TRANS_PLAN");
  4008. entityDispose.disposeTransPlan(amsTransPlan);
  4009. transPlanList.add(amsTransPlan);
  4010. //增加计划子表记录
  4011. AmsPlanChild amsPlanChild = new AmsPlanChild();
  4012. amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId());
  4013. amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId());
  4014. amsPlanChild.setRequirementChildId(amsRequirementChild.getRequirementChildId());
  4015. amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(maps.get("materialId")));
  4016. amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber")));
  4017. amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight")));
  4018. amsPlanChild.setTransTruckNumber(new BigDecimal(1));
  4019. amsPlanChild.setDeleted(new BigDecimal(0));
  4020. amsPlanChild.setInsertTime(new Date());
  4021. amsPlanChild.setInsertUsername(map.get("userName").toString());
  4022. amsPlanChild.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark());
  4023. entityDispose.disposePlanChild(amsPlanChild);
  4024. planChildList.add(amsPlanChild);
  4025. //增加运单主表记录
  4026. OmsTransOrder omsTransOrder = new OmsTransOrder();
  4027. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  4028. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  4029. omsTransOrder.getTransOrderId().intValue()));
  4030. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
  4031. omsTransOrder.setDriverId(DataChange.dataToBigDecimal(map.get("personnelId")));
  4032. omsTransOrder.setOrderType(amsTransRequirement.getBusinessType());
  4033. omsTransOrder.setIssueTime(amsTransRequirement.getInsertTime());
  4034. omsTransOrder.setInsertTime(new Date());
  4035. omsTransOrder.setInsertUsername(map.get("userName").toString());
  4036. omsTransOrder.setDeleted(new BigDecimal(4));
  4037. omsTransOrder.setAlternateFields2("");
  4038. omsTransOrder.setCurrentLineSeq(new BigDecimal(0));
  4039. entityDispose.disposeOmsTransOrder(omsTransOrder);
  4040. transOrderList.add(omsTransOrder);
  4041. //增加运单子表记录
  4042. OmsOrderChild omsOrderChild = new OmsOrderChild();
  4043. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  4044. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  4045. omsOrderChild.setPlanChildId(amsPlanChild.getPlanChildId());
  4046. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(maps.get("materialId")));
  4047. omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber")));
  4048. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight")));
  4049. omsOrderChild.setInsertTime(new Date());
  4050. omsOrderChild.setInsertUsername(map.get("userName").toString());
  4051. omsOrderChild.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark());
  4052. omsOrderChild.setDeleted(new BigDecimal(0));
  4053. omsOrderChild.setAlternateFields7("1");
  4054. omsOrderChild.setAlternateFields1(omsOrderChildMapper.selectMax(i));
  4055. i++;
  4056. omsOrderChild.setAlternateFields2(map.get("loadPointId") + "");
  4057. entityDispose.disposeOrderChild(omsOrderChild);
  4058. orderChildList.add(omsOrderChild);
  4059. //修改发运单已出重量
  4060. BigDecimal weight = new BigDecimal(0);
  4061. HashMap<String, Object> dlivDirnoMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1());
  4062. weight = DataChange.dataToBigDecimal(dlivDirnoMap.get("outweight")).add(DataChange.getBigDecimal(maps.get("materialWeight")));
  4063. dlivDirnoMap.put("outweight", weight);
  4064. amsTransRequirementMapper.updatedlivDirNo(dlivDirnoMap);
  4065. //获取运输类型
  4066. String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString());
  4067. if ((businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售")
  4068. || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))
  4069. && amsTransRequirement.getSourceOrderId() != null) {
  4070. dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1());
  4071. }
  4072. //查询物资及物资大类信息
  4073. Map<String, Object> materialMap = new HashMap<>();
  4074. materialMap.put("materialId", omsOrderChild.getMaterialId());
  4075. Map<String, Object> materialType = omsTransOrderMapper.getMaterialInfo(materialMap);
  4076. if (materialType == null) {
  4077. materialType = new HashMap<>();
  4078. }
  4079. //匹配路线新增各类实绩
  4080. Map<String, Object> lineMap = new HashMap<>();
  4081. lineMap.put("planChildId", amsPlanChild.getPlanChildId());
  4082. lineMap.put("businessTypeId", omsTransOrder.getOrderType());
  4083. lineMap.put("transOrderId", omsTransOrder.getTransOrderId());
  4084. lineMap.put("materialTypeId", DataChange.dataToBigDecimal(materialType.get("materialTypeId")));
  4085. lineMap.put("businessNameId", amsRequirementChild.getOperationsNameId());
  4086. lineMap.put("materialId", omsOrderChild.getMaterialId());
  4087. lineMap.put("loadPointId", map.get("loadPointId").toString());
  4088. lineMap.put("consigneeId", amsTransRequirement.getReceivingCompanyId());
  4089. lineMap.put("userName", map.get("userName").toString());
  4090. lineMap.put("lineId", amsTransRequirement.getLineId());
  4091. Map<String, Object> objectMap = matchLineAndCreatResult(lineMap);
  4092. omsTransOrder.setLineId(DataChange.dataToBigDecimal(objectMap.get("lineId")));
  4093. }
  4094. amsTransPlanMapper.batchInsert(transPlanList);
  4095. amsPlanChildMapper.batchInsert(planChildList);
  4096. omsTransOrderMapper.batchInsert(transOrderList);
  4097. omsOrderChildMapper.batchInsert(orderChildList);
  4098. //反写通知单总重量
  4099. for (AmsPlanChild amsPlanChild : planChildList) {
  4100. sumWeight(amsPlanChild.getRequirementChildId());
  4101. sumWeightPlan(amsPlanChild.getPlanChildId());
  4102. }
  4103. //推送WMS派车单
  4104. if (dlivDirnoSeqList.size() > 0) {
  4105. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  4106. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd";
  4107. wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url);
  4108. }
  4109. return "操作成功!";
  4110. }
  4111. /**
  4112. * 一车多趟,重新派车
  4113. * @param transOrderId
  4114. */
  4115. @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
  4116. public void reDispatchOrder(BigDecimal transOrderId) throws Exception{
  4117. //查询运单并校验
  4118. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  4119. //校验次数是否还有
  4120. if(DataChange.dataToBigDecimal(omsTransOrder.getAlternateFields28()).compareTo(new BigDecimal(1)) == 0) {
  4121. throw new Exception("次数已抵达上限,无法派车!");
  4122. //如果次数等于0
  4123. }
  4124. if(!"系统签到".equals(omsTransOrder.getConfirmReason())) {
  4125. throw new Exception("非系统签到无法使用一车多趟!");
  4126. }
  4127. Map<String,Object> searchMap_child = new HashMap<>();
  4128. searchMap_child.put("transOrderId",omsTransOrder.getTransOrderId());
  4129. searchMap_child.put("deleted",0);
  4130. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(searchMap_child).get(0);
  4131. //校验分录余额
  4132. Map<String,Object> planChild = new HashMap<>();
  4133. planChild.put("planChildId",omsOrderChild.getPlanChildId());
  4134. Map<String, Object> planDetails;
  4135. if (omsTransOrder.getBusinessScene().equals("销售")) {
  4136. planDetails = omsOrderChildMapper.findPlanChild2(planChild);
  4137. } else {
  4138. planDetails = omsOrderChildMapper.findPlanChild(planChild);
  4139. }
  4140. if (planDetails == null) {
  4141. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  4142. }
  4143. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  4144. String businessScene = DataChange.getString(planDetails.get("businessScene"));
  4145. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  4146. switch (controlMode) {
  4147. case 0:
  4148. //不控制
  4149. break;
  4150. case 1:
  4151. //1:数量控制
  4152. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  4153. BigDecimal materialNumber = omsOrderChild.getNetWeight() == null ? DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber()) : omsOrderChild.getNetWeight();
  4154. if (materialNumber.compareTo(numberLeft) > 0) {
  4155. throw new Exception("数量超出需求限制!");
  4156. }
  4157. break;
  4158. case 2:
  4159. //2:金额控制
  4160. break;
  4161. case 3:
  4162. //3:车数控制
  4163. BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft"));
  4164. BigDecimal truckNumber = BigDecimal.ONE;
  4165. if (truckNumber.compareTo(truckLeft) > 0) {
  4166. throw new Exception("车辆数量超出需求限制!");
  4167. }
  4168. break;
  4169. default:
  4170. throw new Exception("未知的控制类型!");
  4171. }
  4172. //更换运单信息
  4173. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  4174. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  4175. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  4176. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  4177. omsTransOrder.getTransOrderId().intValue()));
  4178. omsTransOrder.setConfirmReason(null);
  4179. omsTransOrder.setDriverConfirmTime(null);
  4180. omsTransOrder.setOrderCommunicationDuration(null);
  4181. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  4182. omsTransOrder.setIssueTime(new Date());
  4183. omsTransOrder.setInsertTime(new Date());
  4184. omsTransOrder.setOrderStatus(null);
  4185. if("销售采购联动".equals(omsTransOrder.getAlternateFields8())) {
  4186. omsTransOrder.setInsertUpdateRemark("一车多趟推单,自动置为9");
  4187. omsTransOrder.setDeleted(new BigDecimal(9));
  4188. }else{
  4189. omsTransOrder.setInsertUpdateRemark("一车多趟推单,自动置为4");
  4190. omsTransOrder.setDeleted(new BigDecimal(4));
  4191. }
  4192. omsTransOrder.setAlternateFields28(DataChange.dataToBigDecimal(omsTransOrder.getAlternateFields28()).subtract(new BigDecimal(1)).toString());
  4193. omsOrderChild.setInsertTime(new Date());
  4194. if("销售".equals(omsTransOrder.getBusinessScene())) {
  4195. omsOrderChild.setMaterialNumber(omsOrderChild.getNetWeight() == null ? DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber()):omsOrderChild.getNetWeight()) ;
  4196. omsOrderChild.setMaterialWeight(BigDecimal.ZERO);
  4197. }else{
  4198. omsOrderChild.setMaterialNumber(BigDecimal.ZERO);
  4199. omsOrderChild.setMaterialWeight(BigDecimal.ZERO);
  4200. }
  4201. omsOrderChild.setNetWeight(null);
  4202. omsOrderChild.setActualWeight(null);
  4203. omsOrderChild.setOriginDate(null);
  4204. omsOrderChild.setAlternateFields9(null);
  4205. omsOrderChild.setAlternateFields10(null);
  4206. omsOrderChild.setAlternateFields11(null);
  4207. omsOrderChild.setTareWeightTime(null);
  4208. omsOrderChild.setEnfactoryTime(null);
  4209. omsOrderChild.setOutfactoryTime(null);
  4210. omsOrderChild.setGrossWeightTime(null);
  4211. omsOrderChild.setNetWeightTime(null);
  4212. omsOrderChild.setSignInTime(null);
  4213. omsOrderChild.setAlternateFields15(null);
  4214. omsOrderChild.setAlternateFields7(null);
  4215. creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),omsTransOrder.getInsertUsername());
  4216. //新增并推送大宗
  4217. entityDispose.disposeOmsTransOrder(omsTransOrder);
  4218. entityDispose.disposeOrderChild(omsOrderChild);
  4219. omsTransOrderMapper.insertSelective(omsTransOrder);
  4220. omsOrderChildMapper.insertSelective(omsOrderChild);
  4221. //推送大宗
  4222. Map<String,Object> config = omsTransOrderMapper.getConfigByName("派单推送大宗");
  4223. config = config == null ? new HashMap<>() : config;
  4224. if("否".equals(config.get("valueString"))){
  4225. log.info("配置如此,无需上传大宗");
  4226. }else{
  4227. dispatchPush(businessType,omsTransOrder.getCapacityId(),omsTransOrder.getDriverId(),omsTransOrder,omsOrderChild,planDetails);
  4228. }
  4229. }
  4230. //查询运单详情
  4231. public void findUnloadDetails(OmsTransOrder omsTransOrder,String userName) throws Exception{
  4232. BigDecimal transOrderId = omsTransOrder.getTransOrderId();
  4233. String transOrderNumber = omsTransOrder.getSerialNumber();
  4234. Map<String,Object> searchMap = new HashMap<>();
  4235. searchMap.put("transOrderId",transOrderId);
  4236. searchMap.put("transOrderNumber",transOrderNumber);
  4237. searchMap.put("deleted",0);
  4238. List<OmsOrderChild> transOrderChildren = omsOrderChildMapper.selectByParameters(searchMap);
  4239. OmsOrderChild transOrderChild = transOrderChildren.get(0);
  4240. BigDecimal transOrderChildId = transOrderChild.getOrderChildId();
  4241. Map<String,Object> unloadDetails = dzFeign.getUnloadDetails(searchMap);
  4242. if(unloadDetails == null) {
  4243. return;
  4244. }
  4245. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4246. SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyyMMddHHmmss");
  4247. List<TmsUnloadResult> list = tmsUnloadResultMapper.selectByParameters(searchMap);
  4248. for(TmsUnloadResult item : list){
  4249. //查询大宗
  4250. String materialCode = "" + unloadDetails.get("materialCode");
  4251. String startTimeStr = null;
  4252. String endTimeStr = null;
  4253. if(unloadDetails.get("startTime") == null && unloadDetails.get("endTime") == null) {
  4254. continue;
  4255. }
  4256. if(unloadDetails.get("startTime") == null) {
  4257. startTimeStr = "" + unloadDetails.get("endTime");
  4258. }else{
  4259. startTimeStr = "" + unloadDetails.get("startTime");
  4260. }
  4261. if(unloadDetails.get("endTime") == null) {
  4262. endTimeStr = "" + unloadDetails.get("startTime");
  4263. }else{
  4264. endTimeStr = "" + unloadDetails.get("endTime");
  4265. }
  4266. String cysjStr = DataChange.getString(unloadDetails.get("cysj"));
  4267. Date unloadStartTime = simpleDateFormat.parse(startTimeStr);
  4268. Date unloadEndTime = simpleDateFormat.parse(endTimeStr);
  4269. Date cysjDate = unloadStartTime;
  4270. if(cysjStr != null && !cysjStr.equals("")){
  4271. cysjDate = simpleDateFormat.parse(cysjStr);
  4272. }
  4273. String cysj = simpleDateFormat.format(cysjDate);
  4274. String unloadSourceId = "" + unloadDetails.get("unloadSourceId");
  4275. String address = "" + unloadDetails.get("address");
  4276. BigDecimal water = DataChange.dataToBigDecimal(unloadDetails.get("water"));
  4277. BigDecimal zazhi = DataChange.dataToBigDecimal(unloadDetails.get("zazhi"));
  4278. BigDecimal actualTonnage = DataChange.dataToBigDecimal(unloadDetails.get("actualTonnage"));
  4279. BigDecimal yfsl = DataChange.dataToBigDecimal(unloadDetails.get("yfsl"));
  4280. BigDecimal unloadPointId = omsTransOrderMapper.getOperationPointBySourceId(unloadSourceId);
  4281. BigDecimal materialId = omsTransOrderMapper.getMaterialIdByCode(materialCode);
  4282. item.setUnloadActualAddress(address);
  4283. item.setTransOrderChildId(transOrderChildId);
  4284. item.setUnloadPointId(unloadPointId);
  4285. item.setActualTonnage(actualTonnage);
  4286. item.setUnloadStatus("自动卸货");
  4287. item.setAlternateFields3(water.toString());
  4288. item.setAlternateFields4(zazhi.toString());
  4289. item.setAlternateFields8(cysj);
  4290. item.setUnloadStartTime(unloadStartTime);
  4291. item.setUnloadEndTime(unloadEndTime);
  4292. item.setUnloadDuration(new BigDecimal(
  4293. (item.getUnloadEndTime().getTime() - item.getUnloadStartTime().getTime())/60000
  4294. ));
  4295. item.setUpdateTime(new Date());
  4296. item.setUpdateUsername(userName);
  4297. tmsUnloadResultMapper.updateByPrimaryKeySelective(item);
  4298. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId);
  4299. omsOrderChild.setActualWeight(item.getActualTonnage());
  4300. omsOrderChild.setMaterialNumber(yfsl);
  4301. omsOrderChild.setKs(DataChange.dataToBigDecimal(item.getAlternateFields3()));
  4302. omsOrderChild.setKz(DataChange.dataToBigDecimal(item.getAlternateFields4()));
  4303. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild);
  4304. }
  4305. }
  4306. public void findLoadDetails(OmsTransOrder omsTransOrder,String userName) throws Exception{
  4307. BigDecimal transOrderId = omsTransOrder.getTransOrderId();
  4308. String transOrderNumber = omsTransOrder.getSerialNumber();
  4309. Map<String,Object> searchMap = new HashMap<>();
  4310. searchMap.put("transOrderId",transOrderId);
  4311. searchMap.put("transOrderNumber",transOrderNumber);
  4312. searchMap.put("deleted",0);
  4313. List<OmsOrderChild> transOrderChildren = omsOrderChildMapper.selectByParameters(searchMap);
  4314. OmsOrderChild transOrderChild = transOrderChildren.get(0);
  4315. BigDecimal transOrderChildId = transOrderChild.getOrderChildId();
  4316. Map<String,Object> loadDetails = dzFeign.getLoadDetails(searchMap);
  4317. if(loadDetails == null) {
  4318. return;
  4319. }
  4320. List<TmsLoadResult> list = tmsLoadResultMapper.selectByParameters(searchMap);
  4321. for(TmsLoadResult item : list) {
  4322. if(item.getLoadEndTime() == null) {
  4323. String loadSourceId = "" + loadDetails.get("loadSourceId");
  4324. BigDecimal loadPointId = omsTransOrderMapper.getOperationPointBySourceId(loadSourceId);
  4325. item.setLoadStartTime(DataChange.dataToDate(loadDetails.get("loadEndTime")));
  4326. item.setLoadEndTime(DataChange.dataToDate(loadDetails.get("loadEndTime")));
  4327. item.setLoadPointId(loadPointId);
  4328. item.setUpdateTime(new Date());
  4329. item.setUpdateUsername("大宗");
  4330. tmsLoadResultMapper.updateByPrimaryKeySelective(item);
  4331. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId);
  4332. omsOrderChild.setActualWeight(item.getActualTonnage());
  4333. omsOrderChild.setOriginDate(item.getLoadEndTime());
  4334. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild);
  4335. }
  4336. }
  4337. }
  4338. //补录车辆档案
  4339. @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
  4340. public void buluCapacity(Map<String,Object> transOrder) throws Exception{
  4341. Map<String, Object> capacity = dzFeign.getCapacityDetails(transOrder);
  4342. if(capacity != null) {
  4343. if(capacity.get("xszh") != null && !"".equals(capacity.get("xszh"))){
  4344. transOrder.put("xszh",capacity.get("xszh"));
  4345. }
  4346. if(capacity.get("yyzh") != null && !"".equals(capacity.get("yyzh"))){
  4347. transOrder.put("yyzh",capacity.get("yyzh"));
  4348. }
  4349. if(capacity.get("cyzgz") != null && !"".equals(capacity.get("cyzgz"))){
  4350. transOrder.put("cyzgz",capacity.get("cyzgz"));
  4351. }
  4352. if(capacity.get("zs") != null && !"".equals(capacity.get("zs"))){
  4353. transOrder.put("zs",capacity.get("zs"));
  4354. }
  4355. if(capacity.get("hzjz") != null && !"".equals(capacity.get("hzjz"))){
  4356. transOrder.put("hzjz",capacity.get("hzjz"));
  4357. }
  4358. if(capacity.get("hzl") != null && !"".equals(capacity.get("hzl"))){
  4359. transOrder.put("hzl",capacity.get("hzl"));
  4360. }
  4361. omsTransOrderMapper.updateCapacity(transOrder);
  4362. omsTransOrderMapper.updateDriver(transOrder);
  4363. //if(capacity.get("sfzh") != null && capacity.get("innerCode") != null) {
  4364. // //根据身份证号更新内码
  4365. // omsTransOrderMapper.updateIdcardsInfo(capacity);
  4366. //}
  4367. }
  4368. }
  4369. /**
  4370. * 补录大宗运单实绩-采购
  4371. * @throws ParseException
  4372. */
  4373. public void buluTransOrder() throws ParseException {
  4374. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-hhmmss");
  4375. List<Map<String, Object>> list = dzFeign.getTransOrderDz();
  4376. Map<String,BigDecimal> capacityMap = new HashMap<>();
  4377. Map<String,BigDecimal> driverMap = new HashMap<>();
  4378. List<OmsTransOrder> transOrderList_add = new ArrayList<>();
  4379. List<OmsOrderChild> orderChildList_add = new ArrayList<>();
  4380. List<TmsWeightResult> weightResultList_add = new ArrayList<>();
  4381. log.debug("listSize = "+list.size());
  4382. for(Map<String , Object> item : list){
  4383. String planNo = item.get("planNo").toString();
  4384. String pczh = item.get("pczh").toString();
  4385. log.debug("pczh:"+pczh);
  4386. // String capacityNumber = item.get("capacityNumber").toString();
  4387. // String driverName = item.get("driverName").toString();
  4388. String startTime = item.get("startTime").toString();
  4389. BigDecimal materialNumber = DataChange.dataToBigDecimal(item.get("materialNumber"));
  4390. String poundNo = item.get("poundNo").toString();
  4391. BigDecimal grossWeight = DataChange.dataToBigDecimal(item.get("grossWeight"));
  4392. BigDecimal tareWeight = DataChange.dataToBigDecimal(item.get("tareWeight"));
  4393. BigDecimal netWeight = DataChange.dataToBigDecimal(item.get("netWeight"));
  4394. BigDecimal bzw = DataChange.dataToBigDecimal(item.get("bzw"));
  4395. //计划
  4396. Map<String,Object> planChild = omsTransOrderMapper.findPlanChildByPlanNo(item);
  4397. BigDecimal planChildId = DataChange.dataToBigDecimal(planChild.get("planChildId"));
  4398. BigDecimal materialId = DataChange.dataToBigDecimal(planChild.get("materialId"));
  4399. BigDecimal orderType = DataChange.dataToBigDecimal(planChild.get("businessType"));
  4400. //车辆
  4401. BigDecimal capacityId = null;
  4402. // if(capacityMap.get(capacityNumber) != null){
  4403. // capacityId = capacityMap.get(capacityNumber);
  4404. // }else{
  4405. // capacityId = omsTransOrderMapper.getCapacityId(capacityNumber);
  4406. // capacityMap.put(capacityNumber,capacityId);
  4407. // }
  4408. //司机
  4409. BigDecimal driverId = null;
  4410. // if(driverMap.get(driverName) != null){
  4411. // driverId = driverMap.get(driverName);
  4412. // }else{
  4413. // driverId = omsTransOrderMapper.getPersonnelId(driverName);
  4414. // driverMap.put(driverName,driverId);
  4415. // }
  4416. //运单
  4417. Map<String,Object> search_Order = new HashMap<>();
  4418. search_Order.put("serialNumber",pczh);
  4419. // List<OmsTransOrder> resultList = new ArrayList<>();
  4420. List<OmsTransOrder> resultList = omsTransOrderMapper.selectByParameters(search_Order);
  4421. if(resultList.size() == 0){
  4422. //运单主表
  4423. OmsTransOrder omsTransOrder = new OmsTransOrder();
  4424. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  4425. omsTransOrder.setSerialNumber(pczh);
  4426. omsTransOrder.setCapacityId(capacityId);
  4427. omsTransOrder.setDriverId(driverId);
  4428. omsTransOrder.setOrderType(orderType);
  4429. omsTransOrder.setIssueTime(dateFormat.parse(startTime));
  4430. omsTransOrder.setOrderStatus("企运通派车回传");
  4431. omsTransOrder.setInsertTime(new Date());
  4432. omsTransOrder.setInsertUsername("大宗导入数据");
  4433. omsTransOrder.setDeleted(new BigDecimal(2));
  4434. omsTransOrder.setCurrentLineSeq(new BigDecimal(0));
  4435. transOrderList_add.add(omsTransOrder);
  4436. //运单子表
  4437. OmsOrderChild omsOrderChild = new OmsOrderChild();
  4438. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  4439. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  4440. omsOrderChild.setPlanChildId(planChildId);
  4441. omsOrderChild.setMaterialId(materialId);
  4442. omsOrderChild.setMaterialWeight(BigDecimal.ZERO);
  4443. omsOrderChild.setMaterialNumber(materialNumber);
  4444. omsOrderChild.setInsertTime(new Date());
  4445. omsOrderChild.setInsertUsername("大宗导入数据");
  4446. omsOrderChild.setDeleted(new BigDecimal(0));
  4447. orderChildList_add.add(omsOrderChild);
  4448. //计量实绩
  4449. TmsWeightResult tmsWeightResult = new TmsWeightResult();
  4450. tmsWeightResult.setResultId(tmsWeightResultMapper.nextId());
  4451. tmsWeightResult.setTransOrderId(omsTransOrder.getTransOrderId());
  4452. tmsWeightResult.setTransOrderChildId(omsOrderChild.getOrderChildId());
  4453. tmsWeightResult.setPoundNo(poundNo);
  4454. tmsWeightResult.setGrossWeight(grossWeight);
  4455. tmsWeightResult.setGrossWeightTime(omsTransOrder.getIssueTime());
  4456. tmsWeightResult.setTareWeight(DataChange.dataToBigDecimal(tareWeight));
  4457. tmsWeightResult.setTareWeightTime(omsTransOrder.getIssueTime());
  4458. tmsWeightResult.setNetWeight(netWeight);
  4459. tmsWeightResult.setNetWeightTime(omsTransOrder.getIssueTime());
  4460. tmsWeightResult.setAlternateFields13(bzw.toString());
  4461. tmsWeightResult.setDeleted(new BigDecimal(0));
  4462. tmsWeightResult.setInsertUsername("大宗导入数据");
  4463. tmsWeightResult.setInsertTime(new Date());
  4464. weightResultList_add.add(tmsWeightResult);
  4465. }else{
  4466. log.debug(pczh+"已存在!");
  4467. }
  4468. }
  4469. int index = 0,section = 200;//分片大小
  4470. while(index * section < transOrderList_add.size()) {
  4471. index++;
  4472. List<OmsTransOrder> tempList = null;
  4473. List<OmsOrderChild> tempList1 = null;
  4474. List<TmsWeightResult> tempList2 = null;
  4475. if (index * section < transOrderList_add.size()) {
  4476. tempList = transOrderList_add.subList((index - 1) * section, index * section);
  4477. tempList1 = orderChildList_add.subList((index - 1) * section, index * section);
  4478. tempList2 = weightResultList_add.subList((index - 1) * section, index * section);
  4479. } else {
  4480. tempList = transOrderList_add.subList((index - 1) * section, transOrderList_add.size());
  4481. tempList1 = orderChildList_add.subList((index - 1) * section, transOrderList_add.size());
  4482. tempList2 = weightResultList_add.subList((index - 1) * section, transOrderList_add.size());
  4483. }
  4484. if(tempList.size()>0){
  4485. omsTransOrderMapper.batchInsert(tempList);
  4486. omsOrderChildMapper.batchInsert(tempList1);
  4487. tmsWeightResultMapper.batchInsert(tempList2);
  4488. }
  4489. }
  4490. }
  4491. public void findSignTime(OmsTransOrder omsTransOrder, String userName) throws Exception {
  4492. //查询运输订单下的签到实绩
  4493. Map<String,Object> searchMap = new HashMap<>();
  4494. searchMap.put("transOrderId",omsTransOrder.getTransOrderId());
  4495. searchMap.put("deleted",0);
  4496. List<TmsSignInResult> list = tmsSignInResultMapper.selectByParameters(searchMap);
  4497. Map<String,Object> config = omsTransOrderMapper.getConfigByName("签到过期时间");
  4498. config = config == null ? new HashMap<>() : config;
  4499. BigDecimal expireHour = DataChange.dataToBigDecimal(config.get("valueNumber"));
  4500. Map<String, Object> objectObjectHashMap = new HashMap<>();
  4501. objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber());
  4502. Map<String,Object> signMap = dzFeign.getTransResult(objectObjectHashMap);
  4503. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4504. if(signMap != null && signMap.get("fksj") != null) {
  4505. Date date = simpleDateFormat.parse(signMap.get("fksj").toString());
  4506. for(TmsSignInResult item : list) {
  4507. if (item.getSignInTime() == null) {
  4508. item.setSignInMode("签到机签到");
  4509. item.setSignInAddress("签到机签到");
  4510. item.setLocationMode("签到机签到");
  4511. item.setSignInTime(date);
  4512. if (expireHour.compareTo(BigDecimal.ZERO) > 0) {
  4513. item.setExpireTime(
  4514. new Date(item.getSignInTime().getTime() + expireHour.multiply(new BigDecimal(1000 * 60 * 60)).longValue())
  4515. );
  4516. }
  4517. item.setResultImage(null);
  4518. item.setUpdateTime(new Date());
  4519. item.setUpdateUsername(userName);
  4520. tmsSignInResultMapper.updateByPrimaryKeySelective(item);
  4521. omsOrderChildService.updateOrderChildInfo(omsTransOrder.getTransOrderId(),null,item.getSignInTime(),"签到");
  4522. //omsTransOrderService.updateOrderStatus(transOrderIds.get(0),item.getSegmentSqe(),"签到",item.getUpdateUsername());
  4523. //map.put("resultId",item.getResultId());//返回给日志记录
  4524. }
  4525. throw new Exception("没有能修改的记录!");
  4526. }
  4527. }
  4528. }
  4529. ExecutorService threadPool = new ThreadPoolExecutor(2,5,
  4530. 1L, TimeUnit.SECONDS,
  4531. new LinkedBlockingQueue<>(3),
  4532. Executors.defaultThreadFactory(),
  4533. new ThreadPoolExecutor.AbortPolicy());
  4534. /**
  4535. * 同步生产实绩
  4536. * @return
  4537. */
  4538. @Transactional(rollbackFor = Exception.class)
  4539. public synchronized String syncProductionResult(Map<String,Object> map) {
  4540. BigDecimal orderId = omsTransOrderMapper.selectOrderInfoByDB(map);
  4541. System.out.println(map.get("djbh").toString() + "==djbh");
  4542. //if (orderId != null) {
  4543. // return "1";
  4544. //}
  4545. JSONObject jsonObject = new JSONObject(map);
  4546. String info1 = null;
  4547. String info2 = null;
  4548. if (jsonObject.toString().length() > 3000) {
  4549. info1 = jsonObject.toString().substring(0,3000);
  4550. info2 = jsonObject.toString().substring(3000);
  4551. }else{
  4552. info1 = jsonObject.toString();
  4553. }
  4554. //接参
  4555. String djbh = map.get("djbh").toString();
  4556. String capacityNumber = map.get("capacityNumber").toString();
  4557. //新增报文表
  4558. Date ts = DataChange.dataToDate(map.get("ts"));
  4559. Date enFacotryTime = DataChange.dataToDate(map.get("enFacotryTime"));
  4560. String entryMode = DataChange.getString(map.get("entryMode"));
  4561. String entryGate = DataChange.getString(map.get("entryGate"));
  4562. String entryImage = DataChange.getString(map.get("entryImage"));
  4563. Date tareTime = DataChange.dataToDate(map.get("tareTime"));
  4564. String tareGate = DataChange.getString(map.get("tareGate"));
  4565. String tareImage = DataChange.getString(map.get("tareImage"));
  4566. Date grossTime = DataChange.dataToDate(map.get("grossTime"));
  4567. String grossGate = DataChange.getString(map.get("grossGate"));
  4568. String grossImage = DataChange.getString(map.get("grossImage"));
  4569. Date outFactoryTime = DataChange.dataToDate(map.get("outFactoryTime"));
  4570. String outMode = DataChange.getString(map.get("outMode"));
  4571. String outGate = DataChange.getString(map.get("outGate"));
  4572. String outImage = DataChange.getString(map.get("outImage"));
  4573. BigDecimal tareWeight = DataChange.dataToBigDecimal(map.get("tareWeight"));
  4574. BigDecimal grossWeight = DataChange.dataToBigDecimal(map.get("grossWeight"));
  4575. BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
  4576. String isReWeight = DataChange.getString(map.get("isReWeight"));//是否复磅
  4577. Date enFacotryTime2 = DataChange.dataToDate(map.get("enFacotryTime2"));
  4578. String entryMode2 = DataChange.getString(map.get("entryMode2"));
  4579. String entryGate2 = DataChange.getString(map.get("entryGate2"));
  4580. String entryImage2 = DataChange.getString(map.get("entryImage2"));
  4581. Date tareTime2 = DataChange.dataToDate(map.get("tareTime2"));
  4582. String tareGate2 = DataChange.getString(map.get("tareGate2"));
  4583. String tareImage2 = DataChange.getString(map.get("tareImage2"));
  4584. Date grossTime2 = DataChange.dataToDate(map.get("grossTime2"));
  4585. String grossGate2 = DataChange.getString(map.get("grossGate2"));
  4586. String grossImage2 = DataChange.getString(map.get("grossImage2"));
  4587. Date outFactoryTime2 = DataChange.dataToDate(map.get("outFactoryTime2"));
  4588. String outMode2 = DataChange.getString(map.get("outMode2"));
  4589. String outGate2 = DataChange.getString(map.get("outGate2"));
  4590. String outImage2 = DataChange.getString(map.get("outImage2"));
  4591. Date unloadTime = null;
  4592. Date loadTime = null;
  4593. if(map.get("unloadTime") != null) {
  4594. unloadTime = DataChange.dataToDate(map.get("unloadTime"));
  4595. }
  4596. //获取卸货时间
  4597. Map<String, Object> objectObjectHashMap = new HashMap<>();
  4598. objectObjectHashMap.put("djbh",djbh);
  4599. objectObjectHashMap.put("businessScene","调拨");
  4600. if("收货".equals(map.get("djflag"))) {
  4601. }else{
  4602. Map<String,Object> zxsjMap = dzFeign.getZxTime(objectObjectHashMap);
  4603. if(zxsjMap != null && zxsjMap.get("xhsj") != null) {
  4604. unloadTime = DataChange.dataToDate(zxsjMap.get("xhsj"));
  4605. }
  4606. if(zxsjMap != null && zxsjMap.get("zhsj") != null) {
  4607. loadTime = DataChange.dataToDate(zxsjMap.get("zhsj"));
  4608. }
  4609. }
  4610. BigDecimal tareWeight2 = DataChange.dataToBigDecimal(map.get("tareWeight2"));
  4611. BigDecimal grossWeight2 = DataChange.dataToBigDecimal(map.get("grossWeight2"));
  4612. BigDecimal netWeight2 = DataChange.dataToBigDecimal(map.get("netWeight2"));
  4613. Map<String,Object> planChildMap = new HashMap<>();
  4614. // 根据需求查询计划
  4615. if("收货".equals(map.get("djflag"))) {
  4616. //map.put("businessTypeId",49996);
  4617. planChildMap = omsTransOrderMapper.findTransPlan(map);
  4618. if(planChildMap == null ) {
  4619. amsFeign.transPurchaseRequirementFromDz(map);
  4620. planChildMap = omsTransOrderMapper.findTransPlan(map);
  4621. if(planChildMap == null) {
  4622. log.error(map.get("tdls")+ "==需求自动导入失败,请运维人员手动导入");
  4623. return "需求自动导入失败,请运维人员手动导入";
  4624. }
  4625. }
  4626. }else{
  4627. map.put("businessTypeId",12);
  4628. planChildMap = omsTransOrderMapper.findTransPlan(map);
  4629. if(planChildMap == null ) {
  4630. amsFeign.transProductRequirementFromDz(map);
  4631. planChildMap = omsTransOrderMapper.findTransPlan(map);
  4632. if(planChildMap == null) {
  4633. log.error(map.get("tdls")+ "==需求自动导入失败,请运维人员手动导入");
  4634. return "需求自动导入失败,请运维人员手动导入";
  4635. }
  4636. }
  4637. }
  4638. BigDecimal requirementChildId = DataChange.dataToBigDecimal(planChildMap.get("requirementChildId"));
  4639. AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(requirementChildId);
  4640. AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId());
  4641. BigDecimal planChildId = DataChange.dataToBigDecimal(planChildMap.get("planChildId"));
  4642. if(planChildId == null || planChildId.compareTo(BigDecimal.ZERO) == 0) {
  4643. //生成计划
  4644. AmsTransPlan amsTransPlan = new AmsTransPlan();
  4645. amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId());
  4646. amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue()));
  4647. amsTransPlan.setCarrierId(new BigDecimal(37019));
  4648. amsTransPlan.setDeleted(BigDecimal.ZERO);
  4649. amsTransPlan.setInsertTime(new Date());
  4650. amsTransPlan.setInsertUsername("系统新增");
  4651. AmsPlanChild amsPlanChild = new AmsPlanChild();
  4652. amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId());
  4653. amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId());
  4654. amsPlanChild.setRequirementChildId(requirementChildId);
  4655. amsPlanChild.setDeleted(new BigDecimal(0));
  4656. amsTransPlanMapper.insertSelective(amsTransPlan);
  4657. amsPlanChildMapper.insertSelective(amsPlanChild);
  4658. planChildId = amsPlanChild.getPlanChildId();
  4659. }
  4660. OmsTransOrder omsTransOrder = new OmsTransOrder();
  4661. BigDecimal driverId = null;
  4662. Object driverName = map.get("driverName");
  4663. if(driverName != null) {
  4664. String driverName1 = driverName.toString().split("国六|电动")[0];
  4665. map.put("driverName",driverName1);
  4666. }
  4667. //根据身份证号查找司机
  4668. try {
  4669. driverId = omsTransOrderMapper.selectDriverId(map);
  4670. } catch (Exception e) {
  4671. e.printStackTrace();
  4672. //根据司机姓名去查询身份证号
  4673. try {
  4674. String idCardNo = omsTransOrderMapper.getIdCardNo(map.get("driverName").toString());
  4675. map.put("identityCard",idCardNo);
  4676. driverId = omsTransOrderMapper.selectDriverId(map);
  4677. } catch (Exception exception) {
  4678. exception.printStackTrace();
  4679. }
  4680. log.error(info1);
  4681. log.error(info2);
  4682. log.error("该身份证对应多个司机。");
  4683. //return "该身份证对应多个司机。";
  4684. }
  4685. if (driverId == null) {
  4686. try {
  4687. String idCardNo = omsTransOrderMapper.getIdCardNo(map.get("driverName").toString());
  4688. map.put("identityCard",idCardNo);
  4689. driverId = omsTransOrderMapper.selectDriverId(map);
  4690. } catch (Exception exception) {
  4691. exception.printStackTrace();
  4692. }
  4693. log.error(info1);
  4694. log.error(info2);
  4695. log.error("该身份证未对应到司机");
  4696. //return "该身份证未对应到司机";
  4697. }
  4698. BigDecimal capacityId = null;
  4699. String reg = "((厂内|场内|社会){0,1}[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{1}[A-HJ-Z]{1}(([DF]{1}[A-HJ-NP-Z0-9]{1}[0-9]{4})|([0-9]{5}[DF]{1})|([A-HJ-NP-Z0-9]{5})))";
  4700. Pattern pattern = Pattern.compile(reg);
  4701. Matcher matcher = pattern.matcher(map.get("capacityNumber").toString().toUpperCase());
  4702. String capacityNo = null;
  4703. if(matcher.find()) {
  4704. capacityNo = matcher.group();
  4705. capacityId = omsTransOrderMapper.selectCapacityId(capacityNo);
  4706. }
  4707. // 生成运单
  4708. if (orderId == null) {
  4709. //没有,走新增
  4710. omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(new BigDecimal(364428));
  4711. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  4712. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  4713. omsTransOrder.getTransOrderId().intValue()));
  4714. omsTransOrder.setDriverId(driverId);
  4715. omsTransOrder.setCapacityId(capacityId);
  4716. omsTransOrder.setAlternateFields7(map.get("djbh").toString());
  4717. omsTransOrder.setIssueTime(new Date());
  4718. omsTransOrder.setInsertTime(new Date());
  4719. omsTransOrder.setInsertUsername("大宗回传");
  4720. omsTransOrder.setDeleted(new BigDecimal(2));
  4721. omsTransOrder.setUpdateTime(new Date());
  4722. omsTransOrder.setUpdateUsername("大宗回传");
  4723. omsTransOrder.setOrderStatus(isReWeight);
  4724. if("update".equals(map.get("flag"))) {
  4725. omsTransOrder.setAlternateFields30(info1);
  4726. omsTransOrder.setAlternateFields31(info2);
  4727. }else{
  4728. omsTransOrder.setAlternateFields4(info1);
  4729. omsTransOrder.setAlternateFields5(info2);
  4730. }
  4731. omsTransOrder.setCapacityNumber(capacityNo == null ? map.get("capacityNumber").toString() : capacityNo);
  4732. omsTransOrder.setDriverName(map.get("driverName").toString());
  4733. omsTransOrder.setAlternateFields27("重复更新");
  4734. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(new BigDecimal(364428));
  4735. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  4736. omsOrderChild.setPlanChildId(planChildId);
  4737. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  4738. omsOrderChild.setDeleted(new BigDecimal(0));
  4739. omsOrderChild.setMaterialId(amsRequirementChild.getMaterialId());
  4740. omsOrderChild.setLoadTime(loadTime);
  4741. omsOrderChild.setUnloadTime(unloadTime);
  4742. map.put("transOrderId",omsTransOrder.getTransOrderId());
  4743. //查询各种实绩
  4744. Map<String,Object> searchMap = new HashMap<>();
  4745. searchMap.put("transOrderId",364428);
  4746. List<TmsEnfactoryResult> enfactoryResultList = tmsEnfactoryResultMapper.selectWeightMap(searchMap);
  4747. List<TmsOutfactoryResult> outfactoryResultList = tmsOutfactoryResultMapper.selectWeightMap(searchMap);
  4748. List<TmsWeightResult> tmsWeightResults = tmsWeightResultMapper.selectByParametersSt(searchMap);
  4749. List<TmsEnfactoryResult> enfactoryResultListActuall = new ArrayList<>();
  4750. List<TmsOutfactoryResult> outfactoryResultListActuall = new ArrayList<>();
  4751. List<TmsWeightResult> tmsWeightResultsActuall = new ArrayList<>();
  4752. //进厂实绩
  4753. enfactoryResultList.get(0).setResultId(tmsEnfactoryResultMapper.nextId());
  4754. enfactoryResultList.get(0).setTransOrderId(omsTransOrder.getTransOrderId());
  4755. enfactoryResultList.get(0).setEntryGateTime(enFacotryTime);
  4756. enfactoryResultList.get(0).setEntryMode(entryMode);
  4757. enfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate,null));
  4758. enfactoryResultList.get(0).setResultImage(entryImage);
  4759. enfactoryResultList.get(0).setAlternateFields2("否");
  4760. enfactoryResultListActuall.add(enfactoryResultList.get(0));
  4761. //出厂实绩
  4762. outfactoryResultList.get(0).setResultId(tmsOutfactoryResultMapper.nextId());
  4763. outfactoryResultList.get(0).setTransOrderId(omsTransOrder.getTransOrderId());
  4764. outfactoryResultList.get(0).setOutGateTime(outFactoryTime);
  4765. outfactoryResultList.get(0).setOutMode(outMode);
  4766. outfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate,null));
  4767. outfactoryResultList.get(0).setResultImage(outImage);
  4768. outfactoryResultList.get(0).setAlternateFields2("否");
  4769. outfactoryResultListActuall.add(outfactoryResultList.get(0));
  4770. //计量实绩
  4771. tmsWeightResults.get(0).setResultId(tmsWeightResultMapper.nextId());
  4772. tmsWeightResults.get(0).setTransOrderId(omsTransOrder.getTransOrderId());
  4773. tmsWeightResults.get(0).setTransOrderChildId(omsOrderChild.getOrderChildId());
  4774. tmsWeightResults.get(0).setTareWeight(tareWeight);
  4775. tmsWeightResults.get(0).setTareWeightTime(tareTime);
  4776. tmsWeightResults.get(0).setAlternateFields6(tareImage);
  4777. tmsWeightResults.get(0).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate,null));
  4778. tmsWeightResults.get(0).setGrossWeight(grossWeight);
  4779. tmsWeightResults.get(0).setGrossWeightTime(grossTime);
  4780. tmsWeightResults.get(0).setResultImage(grossImage);
  4781. tmsWeightResults.get(0).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate,null));
  4782. tmsWeightResults.get(0).setNetWeight(netWeight);
  4783. tmsWeightResults.get(0).setNetWeightTime(grossTime);
  4784. tmsWeightResults.get(0).setAlternateFields12("否");
  4785. tmsWeightResults.get(0).setMaterialId(omsOrderChild.getMaterialId());
  4786. tmsWeightResults.get(0).setPoundNo(djbh);
  4787. //判断净重
  4788. if("龙门吊库→新专线".equals(amsTransRequirement.getAlternateFields13()) && tmsWeightResults.get(0).getNetWeight().compareTo(new BigDecimal(40)) == -1) {
  4789. omsOrderChild.setAlternateFields23("1");
  4790. }
  4791. omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime());
  4792. omsOrderChild.setNetWeight(tmsWeightResults.get(0).getNetWeight());
  4793. tmsWeightResultsActuall.add(tmsWeightResults.get(0));
  4794. //复磅信息
  4795. if("复磅".equals(isReWeight)){
  4796. try{
  4797. //进厂实绩
  4798. enfactoryResultList.get(1).setResultId(tmsEnfactoryResultMapper.nextId());
  4799. enfactoryResultList.get(1).setTransOrderId(omsTransOrder.getTransOrderId());
  4800. enfactoryResultList.get(1).setEntryGateTime(enFacotryTime2);
  4801. enfactoryResultList.get(1).setEntryMode(entryMode2);
  4802. enfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate2,null));
  4803. enfactoryResultList.get(1).setResultImage(entryImage2);
  4804. enfactoryResultList.get(1).setAlternateFields2("是");
  4805. enfactoryResultListActuall.add(enfactoryResultList.get(1));
  4806. //出厂实绩
  4807. outfactoryResultList.get(1).setResultId(tmsOutfactoryResultMapper.nextId());
  4808. outfactoryResultList.get(1).setTransOrderId(omsTransOrder.getTransOrderId());
  4809. outfactoryResultList.get(1).setOutGateTime(outFactoryTime2);
  4810. outfactoryResultList.get(1).setOutMode(outMode2);
  4811. outfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate2,null));
  4812. outfactoryResultList.get(1).setResultImage(outImage2);
  4813. outfactoryResultList.get(1).setAlternateFields2("是");
  4814. outfactoryResultListActuall.add(outfactoryResultList.get(1));
  4815. //计量实绩
  4816. tmsWeightResults.get(1).setResultId(tmsWeightResultMapper.nextId());
  4817. tmsWeightResults.get(1).setTransOrderId(omsTransOrder.getTransOrderId());
  4818. tmsWeightResults.get(1).setTransOrderChildId(omsOrderChild.getOrderChildId());
  4819. tmsWeightResults.get(1).setTareWeight(tareWeight2);
  4820. tmsWeightResults.get(1).setTareWeightTime(tareTime2);
  4821. tmsWeightResults.get(1).setAlternateFields6(tareImage2);
  4822. tmsWeightResults.get(1).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate2,null));
  4823. tmsWeightResults.get(1).setGrossWeight(grossWeight2);
  4824. tmsWeightResults.get(1).setGrossWeightTime(grossTime2);
  4825. tmsWeightResults.get(1).setResultImage(grossImage2);
  4826. tmsWeightResults.get(1).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate2,null));
  4827. tmsWeightResults.get(1).setNetWeight(netWeight2);
  4828. tmsWeightResults.get(1).setNetWeightTime(tareTime2);
  4829. tmsWeightResults.get(1).setMaterialId(omsOrderChild.getMaterialId());
  4830. tmsWeightResults.get(1).setAlternateFields12("是");
  4831. tmsWeightResults.get(1).setPoundNo(djbh);
  4832. tmsWeightResultsActuall.add(tmsWeightResults.get(1));
  4833. omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime());
  4834. omsOrderChild.setNetWeight(tmsWeightResults.get(1).getNetWeight());
  4835. }catch (NullPointerException e){
  4836. log.error("生产路线不包含复磅实绩,报空指针");
  4837. }catch (Exception e){
  4838. e.printStackTrace();
  4839. log.error("生产复磅非空指针异常:"+e.getMessage());
  4840. }
  4841. }
  4842. //新增
  4843. entityDispose.disposeOmsTransOrder(omsTransOrder);
  4844. entityDispose.disposeOrderChild(omsOrderChild);
  4845. omsOrderChildMapper.insertSelective(omsOrderChild);
  4846. try {
  4847. matchLoaderCapacityOrder(omsTransOrder,omsOrderChild);
  4848. } catch (Exception e) {
  4849. e.printStackTrace();
  4850. }
  4851. try {
  4852. matchPriceSyncDz(omsTransOrder,omsOrderChild);
  4853. } catch (Exception e) {
  4854. e.printStackTrace();
  4855. }
  4856. tmsEnfactoryResultMapper.batchInsert(enfactoryResultListActuall);
  4857. tmsOutfactoryResultMapper.batchInsert(outfactoryResultListActuall);
  4858. tmsWeightResultMapper.batchInsert(tmsWeightResultsActuall);
  4859. //try {
  4860. // if (omsTransOrder.getAlternateFields25() == null) {
  4861. // omsTransOrder = syncInwardTransOrder(capacityNo, amsTransRequirement, amsRequirementChild, omsTransOrder, tmsWeightResults);
  4862. // }
  4863. //} catch (Exception e) {
  4864. // e.printStackTrace();
  4865. //}
  4866. if(capacityId != null && driverId == null && omsTransOrder.getCapacityInnerNumber() != null) {
  4867. //如果有小号,车号不存在则提醒调度
  4868. try {
  4869. HashMap<String, Object> sendMap = new HashMap<>();
  4870. sendMap.put("userId", "admin");
  4871. sendMap.put("userName","admin");
  4872. sendMap.put("title", "调拨过磅异常提醒");
  4873. sendMap.put("sendMessage", omsTransOrder.getCapacityInnerNumber() + ":未匹配到司机姓名,请前往运输订单-大宗检查名字是否符合要求");
  4874. sendMap.put("sendType", "01");//01:通知消息
  4875. String websocketId = "物流公司汽运与机械处";
  4876. RESTfulResult resTfulResult = null;
  4877. resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap);
  4878. if (resTfulResult != null && !resTfulResult.isSucceed()) {
  4879. log.error("物流调度消息推送失败:" + resTfulResult.getMessage());
  4880. }
  4881. } catch (Exception e) {
  4882. log.error("物流调度消息推送异常:{}", e);
  4883. e.printStackTrace();
  4884. }
  4885. }
  4886. omsTransOrderMapper.insertSelective(omsTransOrder);
  4887. return "同步成功";
  4888. }else{
  4889. //有,走更新
  4890. omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(orderId);
  4891. omsTransOrder.setDriverId(driverId);
  4892. omsTransOrder.setCapacityId(capacityId);
  4893. omsTransOrder.setAlternateFields7(map.get("djbh").toString());
  4894. omsTransOrder.setDeleted(new BigDecimal(2));
  4895. omsTransOrder.setUpdateTime(new Date());
  4896. omsTransOrder.setUpdateUsername("大宗回传");
  4897. omsTransOrder.setOrderStatus(isReWeight);
  4898. if("update".equals(map.get("flag"))) {
  4899. omsTransOrder.setAlternateFields30(info1);
  4900. omsTransOrder.setAlternateFields31(info2);
  4901. }else{
  4902. omsTransOrder.setAlternateFields4(info1);
  4903. omsTransOrder.setAlternateFields5(info2);
  4904. }
  4905. omsTransOrder.setAlternateFields27("重复更新");
  4906. omsTransOrder.setCapacityNumber(capacityNo == null ? map.get("capacityNumber").toString() : capacityNo);
  4907. omsTransOrder.setDriverName(map.get("driverName").toString());
  4908. map.put("transOrderId",omsTransOrder.getTransOrderId());
  4909. //查询各种实绩
  4910. Map<String,Object> searchMap = new HashMap<>();
  4911. searchMap.put("transOrderId",omsTransOrder.getTransOrderId());
  4912. List<OmsOrderChild> omsOrderChilds = omsOrderChildMapper.selectByParameters(searchMap);
  4913. OmsOrderChild omsOrderChild = omsOrderChilds.get(0);
  4914. omsOrderChild.setPlanChildId(planChildId);
  4915. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  4916. omsOrderChild.setDeleted(new BigDecimal(0));
  4917. omsOrderChild.setLoadTime(loadTime);
  4918. omsOrderChild.setUnloadTime(unloadTime);
  4919. omsOrderChild.setMaterialId(amsRequirementChild.getMaterialId());
  4920. List<TmsEnfactoryResult> enfactoryResultList = tmsEnfactoryResultMapper.selectByParameters(searchMap);
  4921. List<TmsOutfactoryResult> outfactoryResultList = tmsOutfactoryResultMapper.selectByParameters(searchMap);
  4922. List<TmsWeightResult> tmsWeightResults = tmsWeightResultMapper.selectByParameters(searchMap);
  4923. //进厂实绩
  4924. enfactoryResultList.get(0).setEntryGateTime(enFacotryTime);
  4925. enfactoryResultList.get(0).setEntryMode(entryMode);
  4926. enfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate,null));
  4927. enfactoryResultList.get(0).setResultImage(entryImage);
  4928. //出厂实绩
  4929. outfactoryResultList.get(0).setOutGateTime(outFactoryTime);
  4930. outfactoryResultList.get(0).setOutMode(outMode);
  4931. outfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate,null));
  4932. outfactoryResultList.get(0).setResultImage(outImage);
  4933. //计量实绩
  4934. tmsWeightResults.get(0).setTareWeight(tareWeight);
  4935. tmsWeightResults.get(0).setTareWeightTime(tareTime);
  4936. tmsWeightResults.get(0).setAlternateFields6(tareImage);
  4937. tmsWeightResults.get(0).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate,null));
  4938. tmsWeightResults.get(0).setPoundNo(djbh);
  4939. tmsWeightResults.get(0).setGrossWeight(grossWeight);
  4940. tmsWeightResults.get(0).setGrossWeightTime(grossTime);
  4941. tmsWeightResults.get(0).setResultImage(grossImage);
  4942. tmsWeightResults.get(0).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate,null));
  4943. tmsWeightResults.get(0).setNetWeight(netWeight);
  4944. tmsWeightResults.get(0).setNetWeightTime(grossTime);
  4945. tmsWeightResults.get(0).setAlternateFields12("否");
  4946. tmsWeightResults.get(0).setMaterialId(omsOrderChild.getMaterialId());
  4947. //毛重减皮重
  4948. //判断净重
  4949. omsOrderChild.setAlternateFields23(null);
  4950. if("龙门吊库→新专线".equals(amsTransRequirement.getAlternateFields13()) && tmsWeightResults.get(0).getNetWeight().compareTo(new BigDecimal(40)) == -1) {
  4951. omsOrderChild.setAlternateFields23("1");
  4952. }
  4953. omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime());
  4954. omsOrderChild.setNetWeight(tmsWeightResults.get(0).getNetWeight());
  4955. //复磅信息
  4956. if("复磅".equals(isReWeight)){
  4957. if(netWeight2.compareTo(BigDecimal.ZERO) == 1) {
  4958. omsOrderChild.setNetWeight(netWeight2);
  4959. }
  4960. try{
  4961. //进厂实绩
  4962. enfactoryResultList.get(1).setEntryGateTime(enFacotryTime2);
  4963. enfactoryResultList.get(1).setEntryMode(entryMode2);
  4964. enfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate2,null));
  4965. enfactoryResultList.get(1).setResultImage(entryImage2);
  4966. //出厂实绩
  4967. outfactoryResultList.get(1).setOutGateTime(outFactoryTime2);
  4968. outfactoryResultList.get(1).setOutMode(outMode2);
  4969. outfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate2,null));
  4970. outfactoryResultList.get(1).setResultImage(outImage2);
  4971. //计量实绩
  4972. tmsWeightResults.get(1).setTareWeight(tareWeight2);
  4973. tmsWeightResults.get(1).setTareWeightTime(tareTime2);
  4974. tmsWeightResults.get(1).setAlternateFields6(tareImage2);
  4975. tmsWeightResults.get(1).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate2,null));
  4976. tmsWeightResults.get(1).setGrossWeight(grossWeight2);
  4977. tmsWeightResults.get(1).setGrossWeightTime(grossTime2);
  4978. tmsWeightResults.get(1).setResultImage(grossImage2);
  4979. tmsWeightResults.get(1).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate2,null));
  4980. tmsWeightResults.get(1).setMaterialId(omsOrderChild.getMaterialId());
  4981. tmsWeightResults.get(1).setNetWeight(netWeight2);
  4982. tmsWeightResults.get(1).setNetWeightTime(tareTime2);
  4983. tmsWeightResults.get(1).setPoundNo(djbh);
  4984. tmsWeightResults.get(1).setAlternateFields12("是");
  4985. omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime());
  4986. omsOrderChild.setNetWeight(tmsWeightResults.get(1).getNetWeight());
  4987. }catch (NullPointerException e){
  4988. log.error("生产路线不包含复磅实绩,报空指针");
  4989. }catch (Exception e){
  4990. e.printStackTrace();
  4991. log.error("生产复磅非空指针异常:"+e.getMessage());
  4992. }
  4993. }
  4994. //更新
  4995. entityDispose.disposeOmsTransOrder(omsTransOrder);
  4996. entityDispose.disposeOrderChild(omsOrderChild);
  4997. try {
  4998. matchLoaderCapacityOrder(omsTransOrder,omsOrderChild);
  4999. } catch (Exception e) {
  5000. e.printStackTrace();
  5001. }
  5002. try {
  5003. matchPriceSyncDz(omsTransOrder,omsOrderChild);
  5004. } catch (Exception e) {
  5005. e.printStackTrace();
  5006. }
  5007. tmsEnfactoryResultMapper.batchUpdate(enfactoryResultList);
  5008. tmsOutfactoryResultMapper.batchUpdate(outfactoryResultList);
  5009. tmsWeightResultMapper.batchUpdate(tmsWeightResults);
  5010. //同步实绩
  5011. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  5012. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  5013. if(capacityId != null && driverId == null && omsTransOrder.getCapacityInnerNumber() != null) {
  5014. //如果有小号,车号不存在则提醒调度
  5015. try {
  5016. HashMap<String, Object> sendMap = new HashMap<>();
  5017. sendMap.put("userId", "admin");
  5018. sendMap.put("userName","admin");
  5019. sendMap.put("title", "调拨过磅异常提醒");
  5020. sendMap.put("sendMessage", omsTransOrder.getCapacityInnerNumber() + ":未匹配到司机姓名,请前往运输订单-大宗检查名字是否符合要求");
  5021. sendMap.put("sendType", "01");//01:通知消息
  5022. String websocketId = "物流公司汽运与机械处";
  5023. RESTfulResult resTfulResult = null;
  5024. resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap);
  5025. if (resTfulResult != null && !resTfulResult.isSucceed()) {
  5026. log.error("物流调度消息推送失败:" + resTfulResult.getMessage());
  5027. }
  5028. } catch (Exception e) {
  5029. log.error("物流调度消息推送异常:{}", e);
  5030. e.printStackTrace();
  5031. }
  5032. }
  5033. return "同步生产实绩成功!";
  5034. }
  5035. }
  5036. public synchronized void matchPriceSyncDz(OmsTransOrder omsTransOrder,OmsOrderChild omsOrderChild) {
  5037. // 同步运输订单,查询区间
  5038. String materialName = omsOrderChild.getMaterialName();
  5039. if(materialName == null) {
  5040. return;
  5041. }
  5042. if(omsTransOrder.getCapacityNumber() == null) {
  5043. return;
  5044. }
  5045. //判断车号是不是电动
  5046. String reg = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{1}[A-HJ-Z]{1}([0-9]{5}[DF]{1}))";
  5047. Pattern pattern = Pattern.compile(reg);
  5048. Matcher matcher = pattern.matcher(omsTransOrder.getCapacityNumber());
  5049. String capacityNo = null;
  5050. String capacityTypeName = "普通";
  5051. if(matcher.find()) {
  5052. capacityNo = matcher.group();
  5053. capacityTypeName = "电动车";
  5054. }
  5055. Map<String,Object> map = omsOrderChildMapper.selectBusinessRange(omsOrderChild.getPlanChildId());
  5056. String businessRange = map.get("businessRange") == null ? "" : map.get("businessRange").toString();
  5057. String serialNumber = map.get("serialNumber") == null ? "" : map.get("serialNumber").toString();
  5058. //根据区间及名称查询是否有单价
  5059. Map<String, Object> objectObjectHashMap = new HashMap<>();
  5060. objectObjectHashMap.put("businessRange",businessRange);
  5061. objectObjectHashMap.put("serialNumber",serialNumber);
  5062. objectObjectHashMap.put("materialName",materialName);
  5063. objectObjectHashMap.put("capacityTypeName",capacityTypeName);
  5064. objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5065. objectObjectHashMap.put("deleted",0);
  5066. BigDecimal tonnagePriceValue = omsOrderChildMapper.getNextPrice(objectObjectHashMap);
  5067. if(tonnagePriceValue != null) {
  5068. Map<String, Object> resMap = new HashMap<>();
  5069. resMap.put("djbh",omsTransOrder.getAlternateFields7());
  5070. resMap.put("dj",tonnagePriceValue);
  5071. resMap.put("businessScene",omsTransOrder.getBusinessScene());
  5072. dzFeign.updateYf(resMap);
  5073. }
  5074. return ;
  5075. }
  5076. public synchronized void matchLoaderCapacityOrder(OmsTransOrder omsTransOrder,OmsOrderChild omsOrderChild) {
  5077. //匹配装载机信息
  5078. //获取大宗单据的物料信息与区间
  5079. String materialName = omsOrderChild.getMaterialName();
  5080. if(materialName == null) {
  5081. return;
  5082. }
  5083. if("公司".equals(omsTransOrder.getCapacityNumber())) {
  5084. return;
  5085. }
  5086. if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) {
  5087. return;
  5088. }
  5089. Map<String,Object> map = omsOrderChildMapper.selectBusinessRange(omsOrderChild.getPlanChildId());
  5090. String businessRange = map.get("businessRange") == null ? "" : map.get("businessRange").toString();
  5091. String serialNumber = map.get("serialNumber") == null ? "" : map.get("serialNumber").toString();
  5092. //以下是调拨运单,根据物料名称以及运输订单数据,
  5093. // 根据物料名称以及区间去查询,匹配到了生产物流的一批业务区间、业务名称
  5094. List<DilContrastingRelation> dilContrastingRelationList = new ArrayList<>();
  5095. if ("采购".equals(omsTransOrder.getBusinessScene()) || "销售".equals(omsTransOrder.getBusinessScene())) {
  5096. dilContrastingRelationList = dilContrastingRelationMapper.selectInfoMap(serialNumber);
  5097. }else{
  5098. dilContrastingRelationList = dilContrastingRelationMapper.selectDbMap(businessRange,materialName);
  5099. }
  5100. if(dilContrastingRelationList == null || dilContrastingRelationList.size() == 0) {
  5101. omsTransOrder.setAlternateFields44("未匹配到生产物流大车单据");
  5102. omsTransOrder.setAlternateFields45("未匹配到生产物流装机数据");
  5103. return;
  5104. }
  5105. // 该业务匹配到了一批数据;分为两块,一个是匹配大车,一个是匹配装载机
  5106. //// 首先匹配大车数据
  5107. Map<String, Object> objectObjectHashMap = new HashMap<>();
  5108. objectObjectHashMap.put("dilContrastingRelationList",dilContrastingRelationList);
  5109. objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5110. objectObjectHashMap.put("capacityNumber",omsTransOrder.getCapacityNumber());
  5111. objectObjectHashMap.put("driverName",omsTransOrder.getDriverName());
  5112. //// 大车应只有一个
  5113. //List<BigDecimal> orderDcChilds = omsTransOrderMapper.selectDacheCapacityIds(objectObjectHashMap);
  5114. //if(orderDcChilds == null || orderDcChilds.size() == 0) {
  5115. // omsTransOrder.setAlternateFields44("未匹配到生产物流大车单据");
  5116. // return;
  5117. //}
  5118. //BigDecimal netWeight = DataChange.dataToBigDecimal(omsOrderChild.getNetWeight());
  5119. //BigDecimal actualWeight = DataChange.dataToBigDecimal(omsOrderChild.getActualWeight());
  5120. //BigDecimal materialNumber = DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber());
  5121. //for(BigDecimal orderChildId : orderDcChilds) {
  5122. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5123. // if(omsOrderChild1.getAlternateFields20() != null) {
  5124. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5125. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5126. // continue;
  5127. // }
  5128. // }
  5129. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(netWeight));
  5130. // omsOrderChild1.setActualWeight(DataChange.dataToBigDecimal(omsOrderChild1.getActualWeight()).add(actualWeight));
  5131. // omsOrderChild1.setMaterialNumber(DataChange.dataToBigDecimal(omsOrderChild1.getMaterialNumber().add(materialNumber)));
  5132. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5133. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5134. //}
  5135. //omsTransOrder.setAlternateFields44(orderDcChilds.toString());
  5136. // 如果该区间该时间匹配到装机数据了
  5137. List<BigDecimal> orderZjChilds = omsTransOrderMapper.selectLoaderCapacityIds(objectObjectHashMap);
  5138. if(orderZjChilds == null || orderZjChilds.size() == 0) {
  5139. omsTransOrder.setAlternateFields45("未匹配到生产物流装机数据");
  5140. return;
  5141. }
  5142. // 平分
  5143. BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderZjChilds.size()),2,4);
  5144. for(BigDecimal orderChildId : orderZjChilds) {
  5145. OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5146. if(omsOrderChild1.getAlternateFields20() != null) {
  5147. String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5148. if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5149. continue;
  5150. }
  5151. }
  5152. omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5153. omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5154. omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5155. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5156. }
  5157. omsTransOrder.setAlternateFields45(orderZjChilds.toString());
  5158. return;
  5159. //if("无烟煤".equals(materialName)) {
  5160. // //匹配无烟煤数据
  5161. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5162. // objectObjectHashMap.put("businessName","下站无烟煤");
  5163. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5164. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5165. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5166. // return;
  5167. // }
  5168. // //平分
  5169. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5170. // for(BigDecimal orderChildId : orderChildIds) {
  5171. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5172. // if(omsOrderChild1.getAlternateFields20() != null) {
  5173. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5174. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5175. // continue;
  5176. // }
  5177. // }
  5178. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5179. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5180. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5181. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5182. // }
  5183. // return;
  5184. //}
  5185. //if(materialName.contains("球团") && "旧烧结→4#高炉".equals(businessRange)) {
  5186. // //匹配球团数据
  5187. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5188. // //objectObjectHashMap.put("businessRange","旧供料");
  5189. // objectObjectHashMap.put("businessName","装 矿石 球团 等物料");
  5190. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5191. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5192. // objectObjectHashMap.put("businessName","装球团");
  5193. // List<BigDecimal> orderChildIds1 = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5194. // orderChildIds.addAll(orderChildIds1);
  5195. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5196. // return;
  5197. // }
  5198. // //平分
  5199. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5200. // for(BigDecimal orderChildId : orderChildIds) {
  5201. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5202. // if(omsOrderChild1.getAlternateFields20() != null) {
  5203. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5204. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5205. // continue;
  5206. // }
  5207. // }
  5208. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5209. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5210. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5211. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5212. // }
  5213. // return;
  5214. //}
  5215. //// 获取仓储库中物料
  5216. //List<String> materialNameList = omsOrderChildMapper.selectMaterialName();
  5217. //if(materialNameList.contains(materialName)){
  5218. // //匹配装矿石数据
  5219. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5220. // objectObjectHashMap.put("businessRange","物流仓储库");
  5221. // objectObjectHashMap.put("businessName","装矿石");
  5222. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5223. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5224. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5225. // return;
  5226. // }
  5227. // //平分
  5228. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5229. // for(BigDecimal orderChildId : orderChildIds) {
  5230. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5231. // if(omsOrderChild1.getAlternateFields20() != null) {
  5232. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5233. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5234. // continue;
  5235. // }
  5236. // }
  5237. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5238. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5239. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5240. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5241. // }
  5242. // return;
  5243. //}
  5244. //// 获取装垃圾数据
  5245. //if(("垃圾".equals(materialName) || "矸石".equals(materialName)) && "三厂→安博".equals(businessRange)) {
  5246. // //匹配区间,三厂的
  5247. // //匹配装矿石数据
  5248. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5249. // objectObjectHashMap.put("businessRange","配运车间-安博");
  5250. // objectObjectHashMap.put("businessName","倒垃圾");
  5251. // //objectObjectHashMap.put("businessName","串、厂内转运");
  5252. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5253. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5254. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5255. // return;
  5256. // }
  5257. // //平分
  5258. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5259. // for(BigDecimal orderChildId : orderChildIds) {
  5260. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5261. // if(omsOrderChild1.getAlternateFields20() != null) {
  5262. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5263. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5264. // continue;
  5265. // }
  5266. // }
  5267. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5268. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5269. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5270. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5271. // }
  5272. // return;
  5273. //}
  5274. ////
  5275. //// 获取装垃圾数据
  5276. //if(("垃圾".equals(materialName) || "矸石".equals(materialName)) && "新泰→安博".equals(businessRange)) {
  5277. // //匹配区间,三厂的
  5278. // //匹配装矿石数据
  5279. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5280. // objectObjectHashMap.put("businessName","装垃圾");
  5281. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5282. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5283. // objectObjectHashMap.put("businessName","倒垃圾");
  5284. // List<BigDecimal> orderChildIds1 = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5285. // orderChildIds.addAll(orderChildIds1);
  5286. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5287. // return;
  5288. // }
  5289. // //平分
  5290. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5291. // for(BigDecimal orderChildId : orderChildIds) {
  5292. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5293. // if(omsOrderChild1.getAlternateFields20() != null) {
  5294. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5295. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5296. // continue;
  5297. // }
  5298. // }
  5299. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5300. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5301. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5302. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5303. // }
  5304. // return;
  5305. //}
  5306. //if("烧结矿".equals(materialName)) {
  5307. // //匹配无烟煤数据
  5308. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5309. // //objectObjectHashMap.put("businessRange","冶炼厂旧供料");
  5310. // objectObjectHashMap.put("businessName","装烧结");
  5311. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5312. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5313. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5314. // return;
  5315. // }
  5316. // //平分
  5317. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5318. // for(BigDecimal orderChildId : orderChildIds) {
  5319. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5320. // if(omsOrderChild1.getAlternateFields20() != null) {
  5321. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5322. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5323. // continue;
  5324. // }
  5325. // }
  5326. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5327. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5328. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5329. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5330. // }
  5331. // return;
  5332. //}
  5333. //if("锰矿".equals(materialName)) {
  5334. // //匹配无烟煤数据
  5335. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5336. // objectObjectHashMap.put("businessRange","冶炼厂旧供料");
  5337. // objectObjectHashMap.put("businessName","装锰矿");
  5338. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5339. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5340. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5341. // return;
  5342. // }
  5343. // //平分
  5344. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5345. // for(BigDecimal orderChildId : orderChildIds) {
  5346. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5347. // if(omsOrderChild1.getAlternateFields20() != null) {
  5348. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5349. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5350. // continue;
  5351. // }
  5352. // }
  5353. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5354. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5355. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5356. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5357. // }
  5358. // return;
  5359. //}
  5360. //if("石子".equals(materialName)) {
  5361. // //匹配无烟煤数据
  5362. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5363. // //objectObjectHashMap.put("businessRange","冶炼厂旧供料");
  5364. // objectObjectHashMap.put("businessName","装石子");
  5365. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5366. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5367. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5368. // return;
  5369. // }
  5370. // //平分
  5371. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5372. // for(BigDecimal orderChildId : orderChildIds) {
  5373. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5374. // if(omsOrderChild1.getAlternateFields20() != null) {
  5375. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5376. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5377. // continue;
  5378. // }
  5379. // }
  5380. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5381. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5382. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5383. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5384. // }
  5385. // return;
  5386. //}
  5387. //if(materialName.contains("白云石粉") && "四厂中间库(炼铁)→西料场".equals(businessRange)){
  5388. // //匹配无烟煤数据
  5389. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5390. // objectObjectHashMap.put("businessRange","洗煤厂中间库-西料场");
  5391. // objectObjectHashMap.put("businessName","装白云石");
  5392. // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime());
  5393. // List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  5394. // if(orderChildIds == null || orderChildIds.size() == 0) {
  5395. // return;
  5396. // }
  5397. // //平分
  5398. // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4);
  5399. // for(BigDecimal orderChildId : orderChildIds) {
  5400. // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  5401. // if(omsOrderChild1.getAlternateFields20() != null) {
  5402. // String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  5403. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5404. // continue;
  5405. // }
  5406. // }
  5407. // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  5408. // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  5409. // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5410. // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  5411. // }
  5412. // return;
  5413. //}
  5414. }
  5415. //private void matchPurchaseSaleCapacityOrder(OmsTransOrder omsTransOrder, OmsOrderChild omsOrderChild,String serialNumber) {
  5416. // // 如果是采购或者销售
  5417. // // 根据合同号去找寻生产物流对应的业务区间、业务名称、业务类型数据
  5418. // Map<String, Object> objectObjectHashMap = new HashMap<>();
  5419. // objectObjectHashMap.put("serialNumber",serialNumber);
  5420. // List<DilContrastingRelation> dilContrastingRelationList = dilContrastingRelationMapper.selectInfoMap(objectObjectHashMap);
  5421. //
  5422. // if(dilContrastingRelationList != null && dilContrastingRelationList.size() > 0 && dilContrastingRelationList.get(0) != null) {
  5423. // DilContrastingRelation dilContrastingRelation = dilContrastingRelationList.get(0);
  5424. // List
  5425. // Map<String, Object> objectObjectHashMap1 = new HashMap<>();
  5426. // objectObjectHashMap1.put("businessRange",dilContrastingRelation.getScBusinessRange());
  5427. // objectObjectHashMap1.put("businessName",dilContrastingRelation.getScBusinessName());
  5428. // objectObjectHashMap1.put("scBusinessType",dilContrastingRelation.getScBusinessType());
  5429. // objectObjectHashMap1.put("capacityNumber",omsTransOrder.getCapacityNumber());
  5430. // objectObjectHashMap1.put("driverName",omsTransOrder.getDriverName());
  5431. // objectObjectHashMap1.put("netWeightTime",omsOrderChild.getNetWeightTime());
  5432. // //根据车号、司机、类型、业务区间、业务名称去匹配车号
  5433. // BigDecimal scOmsOrderChildId = omsOrderChildMapper.getDzOmsOrderChildId(objectObjectHashMap1);
  5434. // if(scOmsOrderChildId == null) {
  5435. // omsTransOrder.setAlternateFields43("未找到对应的生产物流运单");
  5436. // omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  5437. // return;
  5438. // }
  5439. // OmsOrderChild scOmsOrderChild = omsOrderChildMapper.selectByPrimaryKey(scOmsOrderChildId);
  5440. // BigDecimal actualWeight = omsOrderChild.getActualWeight();
  5441. // BigDecimal materialNumber = omsOrderChild.getMaterialNumber();
  5442. // BigDecimal netWeight = omsOrderChild.getNetWeight();
  5443. // if(scOmsOrderChild.getAlternateFields20() != null) {
  5444. // String[] stringList = scOmsOrderChild.getAlternateFields20().split(",");
  5445. // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  5446. // //如果包含,则重新算
  5447. // return;
  5448. // }
  5449. // }
  5450. // scOmsOrderChild.setNetWeight(DataChange.dataToBigDecimal(scOmsOrderChild.getNetWeight()).add(netWeight));
  5451. // scOmsOrderChild.setActualWeight(DataChange.dataToBigDecimal(scOmsOrderChild.getActualWeight()).add(actualWeight));
  5452. // scOmsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(scOmsOrderChild.getMaterialNumber()).add(materialNumber));
  5453. // scOmsOrderChild.setAlternateFields20(scOmsOrderChild.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : scOmsOrderChild.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  5454. // omsOrderChildMapper.updateByPrimaryKeySelective(scOmsOrderChild);
  5455. // }
  5456. //
  5457. //}
  5458. @Transactional(rollbackFor = Exception.class)
  5459. public OmsTransOrder syncInwardTransOrder(String capacityNo,
  5460. AmsTransRequirement amsTransRequirement,
  5461. AmsRequirementChild amsRequirementChild,
  5462. OmsTransOrder omsTransOrder,
  5463. List<TmsWeightResult> tmsWeightResults) {
  5464. //查询视拓需求
  5465. Map<String, Object> searchMap = new HashMap<>();
  5466. searchMap.put("dzMaterialId",amsRequirementChild.getMaterialId());
  5467. searchMap.put("dzTransRange",amsTransRequirement.getAlternateFields13());
  5468. searchMap.put("deleted",0);
  5469. List<AmsBindRequirement> amsBindRequirementList = amsBindRequirementMapper.selectByParameters(searchMap);
  5470. if(amsBindRequirementList == null || amsBindRequirementList.size() == 0) {
  5471. //如果为空,则新增记录
  5472. AmsBindRequirement amsBindRequirement = new AmsBindRequirement();
  5473. amsBindRequirement.setPrimaryId(amsBindRequirementMapper.nextId());
  5474. amsBindRequirement.setDzMaterialId(amsRequirementChild.getMaterialId());
  5475. amsBindRequirement.setDzTransRange(amsTransRequirement.getAlternateFields13());
  5476. amsBindRequirementMapper.insertSelective(amsBindRequirement);
  5477. omsTransOrder.setAlternateFields27("未找到匹配的物流需求");
  5478. return omsTransOrder;
  5479. }
  5480. if(amsBindRequirementList.get(0).getStMaterialType() == null && amsBindRequirementList.get(0).getStTransRange() == null) {
  5481. omsTransOrder.setAlternateFields27("未找到匹配的物流需求");
  5482. return omsTransOrder;
  5483. }
  5484. TmsWeightResult tmsWeightResultOld = tmsWeightResults.get(tmsWeightResults.size() - 1);
  5485. Map<String,Object> stSearchMap = new HashMap<>();
  5486. stSearchMap.put("capacityNo",capacityNo);
  5487. stSearchMap.put("stTransRange",amsBindRequirementList.get(0).getStTransRange());
  5488. stSearchMap.put("capacityTypeId",amsBindRequirementList.get(0).getStCapacityTypeId());
  5489. stSearchMap.put("materialId",amsBindRequirementList.get(0).getStMaterialId());
  5490. stSearchMap.put("materialType",amsBindRequirementList.get(0).getStMaterialType());
  5491. stSearchMap.put("netWeightTime",tmsWeightResultOld.getNetWeightTime());
  5492. OmsOrderChild omsOrderChildInward = omsOrderChildMapper.selectInwardTransOrderId(stSearchMap);
  5493. if(omsOrderChildInward == null) {
  5494. omsTransOrder.setAlternateFields27("未找到符合条件的运单");
  5495. return omsTransOrder;
  5496. }
  5497. OmsTransOrder omsTransOrderInward = omsTransOrderMapper.selectByPrimaryKey(omsOrderChildInward.getTransOrderId());
  5498. //查询该运单下的所有计量实绩
  5499. Map<String, Object> weightMap = new HashMap<>();
  5500. weightMap.put("transOrderId",omsTransOrderInward.getTransOrderId());
  5501. weightMap.put("deleted",0);
  5502. List<TmsWeightResult> tmsWeightResultList = tmsWeightResultMapper.selectByParametersSt(weightMap);
  5503. int lineSeq = tmsWeightResultList.size() + 1;
  5504. TmsWeightResult tmsWeightResult = new TmsWeightResult();
  5505. tmsWeightResult.setResultId(tmsWeightResultMapper.nextId());
  5506. tmsWeightResult.setTransOrderId(omsTransOrderInward.getTransOrderId());
  5507. tmsWeightResult.setTransOrderChildId(omsOrderChildInward.getOrderChildId());
  5508. tmsWeightResult.setTareWeight(tmsWeightResultOld.getTareWeight());
  5509. tmsWeightResult.setTareWeightTime(tmsWeightResultOld.getTareWeightTime());
  5510. tmsWeightResult.setAlternateFields6(tmsWeightResultOld.getAlternateFields6());
  5511. tmsWeightResult.setTarePlaceId(tmsWeightResultOld.getTarePlaceId());
  5512. tmsWeightResult.setGrossWeight(tmsWeightResultOld.getGrossWeight());
  5513. tmsWeightResult.setGrossWeightTime(tmsWeightResultOld.getGrossWeightTime());
  5514. tmsWeightResult.setResultImage(tmsWeightResultOld.getResultImage());
  5515. tmsWeightResult.setGrossPlaceId(tmsWeightResultOld.getGrossPlaceId());
  5516. tmsWeightResult.setNetWeight(tmsWeightResultOld.getNetWeight());
  5517. tmsWeightResult.setNetWeightTime(tmsWeightResultOld.getNetWeightTime());
  5518. tmsWeightResult.setAlternateFields12("否");
  5519. tmsWeightResult.setMaterialId(tmsWeightResultOld.getMaterialId());
  5520. tmsWeightResult.setPoundNo(tmsWeightResultOld.getPoundNo());
  5521. if (tmsWeightResultOld.getTareWeightTime().getTime() > tmsWeightResultOld.getGrossWeightTime().getTime()) {
  5522. //皮重时间大于毛重时间,则是先毛后皮
  5523. tmsWeightResult.setGrossSegmentSqe(new BigDecimal(lineSeq +1));
  5524. tmsWeightResult.setTareSegmentSqe(new BigDecimal(lineSeq + 2));
  5525. }else{
  5526. //先皮后毛
  5527. tmsWeightResult.setGrossSegmentSqe(new BigDecimal(lineSeq + 2));
  5528. tmsWeightResult.setTareSegmentSqe(new BigDecimal(lineSeq + 1));
  5529. }
  5530. //更新路段顺序
  5531. omsTransOrderInward.setCurrentLineSeq(new BigDecimal(lineSeq + 2));
  5532. omsOrderChildInward.setNetWeight(tmsWeightResult.getNetWeight().add(omsOrderChildInward.getNetWeight() == null ? BigDecimal.ZERO : omsOrderChildInward.getNetWeight()));
  5533. //上面已经更新好了运单表、计量表、运单子表、老运单表
  5534. tmsWeightResult.setAlternateFields9(omsTransOrder.getTransOrderId().toString());
  5535. tmsWeightResult.setAlternateFields10(tmsWeightResultOld.getResultId().toString());
  5536. omsOrderChildMapper.updateByPrimaryKey(omsOrderChildInward);
  5537. omsTransOrderMapper.updateByPrimaryKey(omsTransOrderInward);
  5538. tmsWeightResultMapper.insertSelective(tmsWeightResult);
  5539. omsTransOrder.setAlternateFields25(omsTransOrderInward.getTransOrderId().toString());
  5540. omsTransOrder.setAlternateFields26(tmsWeightResult.getResultId().toString());
  5541. return omsTransOrder;
  5542. }
  5543. /**
  5544. * 一车多趟,重新派车
  5545. * @param transOrderId
  5546. */
  5547. @Transactional(rollbackFor = Exception.class)
  5548. public void reDispatchOrderBySc(BigDecimal transOrderId) throws Exception{
  5549. //查询运单并校验
  5550. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  5551. Map<String,Object> searchMap_child = new HashMap<>();
  5552. searchMap_child.put("transOrderId",omsTransOrder.getTransOrderId());
  5553. searchMap_child.put("deleted",0);
  5554. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(searchMap_child).get(0);
  5555. //校验分录余额
  5556. Map<String,Object> planChild = new HashMap<>();
  5557. planChild.put("planChildId",omsOrderChild.getPlanChildId());
  5558. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild(planChild);
  5559. if (planDetails == null) {
  5560. throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!");
  5561. }
  5562. BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType"));
  5563. String businessScene = DataChange.getString(planDetails.get("businessScene"));
  5564. int controlMode = Integer.parseInt(planDetails.get("controlMode").toString());
  5565. switch (controlMode) {
  5566. case 0:
  5567. //不控制
  5568. break;
  5569. case 1:
  5570. //1:数量控制
  5571. BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft"));
  5572. BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialNumber"));
  5573. if (materialNumber.compareTo(numberLeft) > 0) {
  5574. throw new Exception("数量超出需求限制!");
  5575. }
  5576. break;
  5577. case 2:
  5578. //2:金额控制
  5579. break;
  5580. case 3:
  5581. //3:车数控制
  5582. BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft"));
  5583. BigDecimal truckNumber = BigDecimal.ONE;
  5584. if (truckNumber.compareTo(truckLeft) > 0) {
  5585. throw new Exception("车辆数量超出需求限制!");
  5586. }
  5587. break;
  5588. default:
  5589. throw new Exception("未知的控制类型!");
  5590. }
  5591. //更换运单信息
  5592. omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId());
  5593. omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId());
  5594. omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId());
  5595. omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  5596. omsTransOrder.getTransOrderId().intValue()));
  5597. omsTransOrder.setConfirmReason(null);
  5598. omsTransOrder.setDriverConfirmTime(null);
  5599. omsTransOrder.setOrderCommunicationDuration(null);
  5600. omsTransOrder.setDeleted(new BigDecimal(4));
  5601. omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO);
  5602. omsTransOrder.setIssueTime(new Date());
  5603. omsTransOrder.setInsertTime(new Date());
  5604. omsTransOrder.setOrderStatus("等待执行");
  5605. omsOrderChild.setInsertTime(new Date());
  5606. creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),omsTransOrder.getInsertUsername());
  5607. //新增并推送大宗
  5608. omsTransOrderMapper.insertSelective(omsTransOrder);
  5609. omsOrderChildMapper.insertSelective(omsOrderChild);
  5610. }
  5611. public List<Map<String, Object>> getDriverDayJob(Map<String, Object> map) {
  5612. List<Map<String, Object>> list = new ArrayList<>();
  5613. //获取计重吨数
  5614. if(map.get("type").toString().contains("计重")){
  5615. list.addAll(omsTransOrderMapper.selectDriverDayJobByWeight(map));
  5616. }
  5617. //获取计次吨数重量
  5618. if(map.get("type").toString().contains("计次")){
  5619. list.addAll(omsTransOrderMapper.selectDriverDayJobByTime(map));
  5620. }
  5621. return list;
  5622. }
  5623. public String outBound(Map<String, Object> maps) throws Exception {
  5624. //获取勾选中的数据
  5625. List<Map<String, Object>> list = (ArrayList)maps.get("list");
  5626. for (Map<String, Object> map : list) {
  5627. //只有大宗销售订单的火运才能在物流中出库
  5628. if (!map.get("businessTypeName").equals("大宗销售订单")) {
  5629. throw new Exception("该业务类型不适用出库!");
  5630. }
  5631. //校验出库量是否超出计划量
  5632. HashMap<String, Object> hashMap = new HashMap<>();
  5633. hashMap.put("dlivDirno", map.get("dlivDirno"));
  5634. List<Map<String, Object>> mapList = amsTransRequirementMapper.selectDlivDirNo(hashMap);
  5635. if (DataChange.dataToBigDecimal(mapList.get(0).get("residueweight")).compareTo(DataChange.dataToBigDecimal(0)) == -1) {
  5636. throw new Exception("出库量超出计划量!");
  5637. }
  5638. //修改运单状态
  5639. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId")));
  5640. omsTransOrder.setDeleted(new BigDecimal(2));
  5641. omsTransOrderMapper.updateByPrimaryKey(omsTransOrder);
  5642. //添加出库人和时间
  5643. Map<String, Object> loadMap = new HashMap<>();
  5644. loadMap.put("transOrderId", map.get("transOrderId"));
  5645. List<TmsLoadResult> tmsLoadResults = tmsLoadResultMapper.selectByParameters(loadMap);
  5646. TmsLoadResult tmsLoadResult = tmsLoadResults.get(0);
  5647. tmsLoadResult.setAlternateFields3(maps.get("userName").toString());
  5648. tmsLoadResult.setLoadEndTime(new Date());
  5649. tmsLoadResultMapper.updateByPrimaryKey(tmsLoadResult);
  5650. }
  5651. return "出库成功!";
  5652. }
  5653. public String revokeOutBound(Map<String, Object> maps) throws Exception {
  5654. //获取勾选中的数据
  5655. List<Map<String, Object>> list = (ArrayList)maps.get("list");
  5656. for (Map<String, Object> map : list) {
  5657. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId")));
  5658. if (omsTransOrder.getDeleted().intValue() != 2) {
  5659. throw new Exception("该状态下不允许撤销出库!");
  5660. }
  5661. omsTransOrder.setDeleted(new BigDecimal(4));
  5662. omsTransOrderMapper.updateByPrimaryKey(omsTransOrder);
  5663. //清除出库人和时间
  5664. Map<String, Object> loadMap = new HashMap<>();
  5665. loadMap.put("transOrderId", map.get("transOrderId"));
  5666. List<TmsLoadResult> tmsLoadResults = tmsLoadResultMapper.selectByParameters(loadMap);
  5667. TmsLoadResult tmsLoadResult = tmsLoadResults.get(0);
  5668. tmsLoadResult.setAlternateFields3("");
  5669. tmsLoadResult.setLoadEndTime(null);
  5670. tmsLoadResultMapper.updateByPrimaryKey(tmsLoadResult);
  5671. }
  5672. return "撤销成功!";
  5673. }
  5674. public String slmDlivDirList(Map<String, Object> map) throws Exception {
  5675. List<Map<String, Object>> dlivDirnoSeqList = (ArrayList)map.get("list");
  5676. List<Map<String, Object>> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList);
  5677. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd";
  5678. wmsUtil.executeArray("90030000001", listMap, map.get("accessToken").toString(), url);
  5679. return "OK";
  5680. }
  5681. /**
  5682. * 更新时间运单状态
  5683. *
  5684. * @param transOrderId
  5685. * @param orderStatus 运单执行状态
  5686. * @return
  5687. */
  5688. public int updateTimeOrderStatus(BigDecimal transOrderId, String orderStatus, String userName) throws Exception {
  5689. try {
  5690. Map<String, Object> searchMap = new HashMap<>();
  5691. searchMap.put("transOrderId", transOrderId.toString());
  5692. searchMap.put("userName", userName);
  5693. Map<String, Object> transOrder = omsTransOrderMapper.getTransOrder(searchMap);
  5694. if (transOrder == null) {
  5695. throw new Exception("没有查询到唯一运单!");
  5696. }
  5697. searchMap.put("businessTypeName",transOrder.get("businessTypeName").toString());
  5698. searchMap.put("billingType",transOrder.get("billingType").toString());
  5699. searchMap.put("remark1",transOrder.get("remark1"));
  5700. searchMap.put("businessScene",transOrder.get("businessScene"));
  5701. searchMap.put("businessType",transOrder.get("businessType"));
  5702. searchMap.put("operationsNameId",transOrder.get("operationsNameId"));
  5703. searchMap.put("operationsRange",transOrder.get("operationsRange"));
  5704. searchMap.put("capacityTypeId",transOrder.get("capacityTypeId"));
  5705. searchMap.put("capacityId",transOrder.get("capacityId"));
  5706. searchMap.put("businessCompanyId",transOrder.get("businessCompanyId"));
  5707. searchMap.put("carrierId",transOrder.get("carrierId"));
  5708. BigDecimal deleted = DataChange.dataToBigDecimal(transOrder.get("deleted"));
  5709. OmsTransOrder omsTransOrder = new OmsTransOrder();
  5710. omsTransOrder.setSerialNumber(transOrder.get("transOrderNumber").toString());
  5711. omsTransOrder.setTransOrderId(transOrderId);
  5712. omsTransOrder.setOrderStatus(orderStatus);
  5713. omsTransOrder.setAlternateFields36("同意");
  5714. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(transOrder.get("transOrderChildId")));
  5715. //补录车辆档
  5716. if (deleted.compareTo(new BigDecimal(4)) == 0 || deleted.compareTo(new BigDecimal(5)) == 0) {
  5717. //正在运行中的运单需要校验是否结束
  5718. //关闭运单
  5719. if ("计重且计时".equals(transOrder.get("billingType"))) {
  5720. if("计时且计吨结束".equals(orderStatus) || (omsOrderChild.getActualWeight() != null && omsOrderChild.getActualDuration() != null)) {
  5721. omsTransOrder.setDeleted(new BigDecimal(2));
  5722. }
  5723. }else{
  5724. omsTransOrder.setDeleted(new BigDecimal(2));
  5725. }
  5726. if ("计重或计时".equals(transOrder.get("billingType"))) {
  5727. if(omsOrderChild.getActualWeight() != null || omsOrderChild.getActualDuration() != null) {
  5728. omsTransOrder.setDeleted(new BigDecimal(2));
  5729. }
  5730. }
  5731. omsTransOrder.setUpdateUsername(userName);
  5732. omsTransOrder.setUpdateTime(new Date());
  5733. omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted());
  5734. }else{
  5735. //emsFeign.emsdetailsordersAdd(searchMap);
  5736. }
  5737. //调用结算接口生成详单
  5738. entityDispose.disposeOmsTransOrder(omsTransOrder);
  5739. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  5740. //传递transOrderId
  5741. Map<String,Object> map = new HashMap<>();
  5742. map.put("transOrderId",transOrderId);
  5743. RESTfulResult resTfulResult = reportFeign.generateOperateDaily(map);
  5744. log.info(resTfulResult);
  5745. } catch (Exception e) {
  5746. e.printStackTrace();
  5747. log.error("更新运单状态失败:" + e.getMessage());
  5748. //throw e;
  5749. }
  5750. return 0;
  5751. }
  5752. @Transactional(rollbackFor = Exception.class)
  5753. public String updateCarNo(Map<String, Object> map) throws Exception {
  5754. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId")));
  5755. omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("newCarno")));
  5756. omsTransOrderMapper.updateByPrimaryKey(omsTransOrder);
  5757. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId")));
  5758. //传WMS系统
  5759. Map<String, Object> listMap = new HashMap<>();
  5760. listMap.put("dlivDirnoSeq", omsOrderChild.getAlternateFields1());
  5761. listMap.put("carNo", omsTransOrder.getCapacityId());
  5762. String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdateCarno";
  5763. wmsUtil.executeObject("90010000006", listMap, map.get("accessToken").toString(), url);
  5764. return "修改成功!";
  5765. }
  5766. public String banTransOrder(Map<String, Object> map) throws Exception{
  5767. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId").toString()));
  5768. if(omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0 && omsTransOrder.getDeleted().compareTo(new BigDecimal(5)) != 0){
  5769. throw new Exception("该运单无法禁用!只允许禁用'未确认'或'已确认'的运单");
  5770. }
  5771. omsTransOrder.setAlternateFields24(map.get("isBan").toString());//0:未禁用,1:已禁用
  5772. omsTransOrder.setOrderStatus(map.get("isBan").toString().equals("0") ? "未禁用" : "已禁用");
  5773. omsTransOrder.setUpdateTime(new Date());
  5774. omsTransOrder.setUpdateUsername(map.get("userName").toString());
  5775. omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder);
  5776. return "操作成功!";
  5777. }
  5778. public List<Map<String, Object>> loadingOperation(Map<String, Object> map) {
  5779. return omsTransOrderMapper.loadingOperation(map);
  5780. }
  5781. public String updateTrainOrderSeq(Map<String, Object> params) {
  5782. String transOrderId = params.get("transOrderId").toString();
  5783. String seq = params.get("seq").toString();
  5784. Map<String, Object> map = new HashMap<>();
  5785. String[] split = transOrderId.split(",");
  5786. map.put("list", split);
  5787. map.put("seq", seq);
  5788. omsTransOrderMapper.updateTrainOrderSeq(map);
  5789. return "操作成功!";
  5790. }
  5791. public List<Map<String, Object>> purchaseTrainsOrderList(Map<String, Object> map) {
  5792. String seq = map.get("transOrderId").toString();
  5793. String[] split = seq.split(",");
  5794. map.put("list", split);
  5795. return omsTransOrderMapper.purchaseTrainsOrderList(map);
  5796. }
  5797. //计算发运数量反写通知单
  5798. public void sumWeight(BigDecimal requirementChildId) {
  5799. //获取发运计划总重量
  5800. String sumWeightToTransPlan = omsTransOrderMapper.sumWeightToTransPlan(requirementChildId);
  5801. //获取运输订单中重量
  5802. String sumWeightToTransOrder = omsTransOrderMapper.sumWeightToTransOrder(requirementChildId);
  5803. //反写通知单
  5804. Map<String, Object> map = new HashMap<>();
  5805. map.put("sumWeightToTransPlan", sumWeightToTransPlan);
  5806. map.put("sumWeightToTransOrder", sumWeightToTransOrder);
  5807. map.put("requirementChildId", requirementChildId);
  5808. omsTransOrderMapper.updateSumWeightToRequirementChild(map);
  5809. }
  5810. //计算数量反写计划
  5811. public void sumWeightPlan(BigDecimal planChildId) {
  5812. //查询已出数量
  5813. Map<String,Object> info = omsTransOrderMapper.selectNumInfo(planChildId);
  5814. //更新计划数量
  5815. if(info != null) {
  5816. info.put("planChildId",planChildId);
  5817. omsTransOrderMapper.updateNumInfo(info);
  5818. }
  5819. }
  5820. //统计运单
  5821. public synchronized void listAggCapacity(BigDecimal planChildId) {
  5822. //查询计划下的车号
  5823. String listAggCapacity = omsTransOrderMapper.selectListAggCapacity(planChildId);
  5824. if(listAggCapacity != null) {
  5825. omsTransOrderMapper.updateCapacityNumbers(planChildId,listAggCapacity);
  5826. }else{
  5827. omsTransOrderMapper.updateCapacityNumbers(planChildId,"");
  5828. }
  5829. }
  5830. //匹配运单
  5831. public Map<String,Object> matching(BigDecimal transOrderId) {
  5832. //根据运单匹配运单信息
  5833. Map<String, Object> objectHashMap = new HashMap<>();
  5834. Map<String, Object> searchMap = new HashMap<>();
  5835. objectHashMap.put("transOrderId",transOrderId);
  5836. //objectHashMap.put("deleted",0);
  5837. List<OmsOrderChild> omsOrderChildList = omsOrderChildMapper.selectByParameters(objectHashMap);
  5838. List<OmsTransOrder> omsTransOrderList = omsTransOrderMapper.selectByParameters(objectHashMap);
  5839. if (omsOrderChildList.get(0).getMaterialName() != null && omsOrderChildList.get(0).getMaterialName().contains("压球")) {
  5840. //查询物料是否配置在原发数量表中
  5841. //查询车辆是不是农用车
  5842. String capacityInnerNumber = tmsSignInResultMapper.getCapacityInnerNumber(omsTransOrderList.get(0).getCapacityId());
  5843. if(capacityInnerNumber != null && capacityInnerNumber.contains("农")) {
  5844. Map<String, Object> map = new HashMap<>();
  5845. map.put("oldTransOrderId",0);
  5846. map.put("materialNumber",25.0);
  5847. return map;
  5848. }
  5849. Map<String, Object> map = new HashMap<>();
  5850. map.put("oldTransOrderId",0);
  5851. map.put("materialNumber",50.0);
  5852. return map;
  5853. }
  5854. //获取销售物料相同,
  5855. //searchMap.put("materialId",omsOrderChildList.get(0).getMaterialId());
  5856. searchMap.put("deleted",0);
  5857. searchMap.put("capacityId",omsTransOrderList.get(0).getCapacityId());
  5858. searchMap.put("driverId",omsTransOrderList.get(0).getDriverId());
  5859. Map<String,Object> oldTransOrderIdMap = omsOrderChildMapper.selectWeightTransOrderId(searchMap);
  5860. if(oldTransOrderIdMap == null) {
  5861. return new HashMap<>();
  5862. }
  5863. if(DataChange.dataToBigDecimal(oldTransOrderIdMap.get("materialId")).compareTo(omsOrderChildList.get(0).getMaterialId()) != 0) {
  5864. return new HashMap<>();
  5865. }
  5866. BigDecimal oldTransOrderId = DataChange.dataToBigDecimal(oldTransOrderIdMap.get("transOrderId"));
  5867. //根据运单ID查询净重
  5868. BigDecimal materialNumber = omsOrderChildMapper.selectAllWeight(oldTransOrderId);
  5869. Map<String, Object> map = new HashMap<>();
  5870. map.put("oldTransOrderId",oldTransOrderId);
  5871. map.put("materialNumber",materialNumber);
  5872. return map;
  5873. }
  5874. public void dispatchPushUpdateYf(BigDecimal transOrderId,OmsOrderChild omsOrderChild) throws Exception {
  5875. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  5876. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId);
  5877. if (omsTransOrder == null) {
  5878. throw new Exception("未查询到运单!");
  5879. }
  5880. Map<String, Object> searchMap = new HashMap<>();
  5881. searchMap.put("transOrderId", transOrderId);
  5882. searchMap.put("deleted", 0);
  5883. Map<String, Object> businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType());
  5884. Map<String, Object> capacity = omsTransOrderMapper.getCapacityById(omsTransOrder.getCapacityId());
  5885. Map<String, Object> driver = omsTransOrderMapper.getPersonnelById(omsTransOrder.getDriverId());
  5886. Map<String, Object> planChildId = new HashMap<>();
  5887. planChildId.put("planChildId", omsOrderChild.getPlanChildId().toString());
  5888. Map<String, Object> planDetails = omsOrderChildMapper.findPlanChild(planChildId);
  5889. if (businessMap == null || businessMap.get("businessTypeName") == null) {
  5890. throw new Exception("业务类型不存在!");
  5891. } else if (capacity == null) {
  5892. throw new Exception("车辆不存在!");
  5893. } else if (driver == null) {
  5894. throw new Exception("司机不存在!");
  5895. } else if (planDetails == null) {
  5896. throw new Exception("计划不存在!");
  5897. }
  5898. Map<String, Object> params = new HashMap<>();
  5899. switch (businessMap.get("businessScene").toString()) {
  5900. case "采购":
  5901. params.put("clbh", capacity.get("capacityNumber"));
  5902. params.put("cllx", capacity.get("capacityType"));
  5903. params.put("sjxm", driver.get("personnelName"));
  5904. params.put("sfzh", driver.get("identityCard"));
  5905. params.put("tel", driver.get("personnelPhone"));
  5906. params.put("wlbh", planDetails.get("materialCode"));
  5907. params.put("bmbh", planDetails.get("receiveSourceId"));
  5908. params.put("shbh", planDetails.get("supplierCompanyCode"));
  5909. params.put("fhbh", planDetails.get("carrierCode"));
  5910. params.put("ckbh", planDetails.get("receivingPointSourceId"));
  5911. params.put("fhdd", planDetails.get("fhdd") == null ? "" : planDetails.get("fhdd"));
  5912. params.put("note", "");
  5913. params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 : omsOrderChild.getOriginMaterialZjs());
  5914. params.put("zsl", omsOrderChild.getMaterialNumber());
  5915. params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));
  5916. params.put("yfdj", "");//运费单价
  5917. params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber"));
  5918. params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls") : planDetails.get("transRequirementId"));
  5919. params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl") : planDetails.get("requirementChildId"));
  5920. params.put("ywbh", omsTransOrder.getOrderType());
  5921. params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date() : omsOrderChild.getOriginDate()));
  5922. params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "" : omsOrderChild.getOriginPoundNo());//原发磅单号
  5923. params.put("rjhh", omsTransOrder.getSerialNumber());
  5924. params.put("username", omsTransOrder.getInsertUsername());
  5925. params.put("wldh", planDetails.get("planNumber"));
  5926. params.put("pfjd", capacity.get("emissionStandardName") == null ? "" : capacity.get("emissionStandardName"));//排放阶段
  5927. params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码
  5928. params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键
  5929. params.put("pcbz",planDetails.get("pcbz") == null ? "" : planDetails.get("pcbz"));
  5930. params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString());
  5931. daZongUtil.execute("30010000017", new Map[]{params});
  5932. break;
  5933. case "销售":
  5934. break;
  5935. case "生产":
  5936. break;
  5937. default:
  5938. throw new Exception("未知的业务类型!");
  5939. }
  5940. if(!"生产".equals(businessMap.get("businessScene"))) {
  5941. //推送车辆档案
  5942. capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId());
  5943. driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId());
  5944. params = new HashMap<>();
  5945. params.putAll(capacity);
  5946. params.putAll(driver);
  5947. daZongUtil.execute("30010000002", new Map[]{params});
  5948. }
  5949. }
  5950. public RESTfulResult matchCarNumber() {
  5951. RESTfulResult resTfulResult = new RESTfulResult();
  5952. try {
  5953. List<TmsAddenergyResult> tmsAddenergyResult = tmsAddenergyResultMapper.selectByCapacityIdIsNull();
  5954. for (TmsAddenergyResult addenergyResult : tmsAddenergyResult) {
  5955. tmsAddenergyResultMapper.updateByPrimaryKeySelective(addenergyResult);
  5956. }
  5957. List<TmsMaintenanceResult> tmsMaintenanceResult = tmsMaintenanceResultMapper.selectByCapacityIdIsNull();
  5958. for (TmsMaintenanceResult maintenanceResult : tmsMaintenanceResult) {
  5959. tmsMaintenanceResultMapper.updateByPrimaryKeySelective(maintenanceResult);
  5960. }
  5961. } catch (Exception e) {
  5962. log.error("匹配失败:{}",e);
  5963. throw e;
  5964. }
  5965. resTfulResult.setSucceedMessage("操作成功");
  5966. return resTfulResult;
  5967. }
  5968. @Transactional
  5969. public RESTfulResult mergeDzOrder(String shift) {
  5970. RESTfulResult resTfulResult = new RESTfulResult();
  5971. try {
  5972. List<Map<String,Object>> omsTransOrders = tmsMaintenanceResultMapper.getDzOrder(shift);
  5973. List<BigDecimal> orderIds = new ArrayList<>();
  5974. for (Map<String,Object> omsTransOrder : omsTransOrders) {
  5975. //查询运单
  5976. Map<String,Object> mapC = new HashMap<>();
  5977. mapC.put("capacityId",omsTransOrder.get("capacityId"));
  5978. mapC.put("shift",shift);
  5979. OmsTransOrder omsTransOrder1 = omsTransOrderMapper.getDzOrderByCapacityId(mapC);
  5980. BigDecimal transOrderId = omsTransOrder1.getTransOrderId();
  5981. Map<String,Object> map = new HashMap<>();
  5982. map.put("transOrderId",transOrderId);
  5983. List<OmsOrderChild> omsOrderChilds = omsOrderChildMapper.selectByParameters(map);
  5984. omsTransOrder1.setTransOrderId(omsTransOrderMapper.nextId());
  5985. omsTransOrder1.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD",
  5986. omsTransOrder1.getTransOrderId().intValue()));
  5987. omsTransOrder1.setInsertUpdateRemark("大宗合并运单");
  5988. omsTransOrderMapper.insertSelective(omsTransOrder1);
  5989. orderIds.add(omsTransOrder1.getTransOrderId());
  5990. BigDecimal orderChildId = null;
  5991. if(omsOrderChilds!=null&&omsOrderChilds.size()>0){
  5992. OmsOrderChild omsOrderChild = omsOrderChilds.get(0);
  5993. omsOrderChild.setTransOrderId(omsTransOrder1.getTransOrderId());
  5994. orderChildId = omsOrderChildMapper.nextId();
  5995. omsOrderChild.setOrderChildId(orderChildId);
  5996. omsOrderChild.setInsertUpdateRemark("大宗合并运单");
  5997. omsOrderChild.setNetWeight(new BigDecimal(omsTransOrder.get("netWeight").toString()));
  5998. omsOrderChildMapper.insert(omsOrderChild);
  5999. }
  6000. TmsWeightResult tmsWeightResult = new TmsWeightResult();
  6001. tmsWeightResult.setTransOrderId(omsTransOrder1.getTransOrderId());
  6002. tmsWeightResult.setResultId(tmsWeightResultMapper.nextId());
  6003. tmsWeightResult.setTransOrderChildId(orderChildId);
  6004. tmsWeightResult.setNetWeight(new BigDecimal(omsTransOrder.get("netWeight").toString()));
  6005. tmsWeightResult.setInsertUpdateRemark("大宗合并运单");
  6006. tmsWeightResult.setInsertTime(new Date());
  6007. tmsWeightResultMapper.insertSelective(tmsWeightResult);
  6008. }
  6009. resTfulResult.setData(orderIds);
  6010. } catch (Exception e) {
  6011. log.error("合并运单:{}",e);
  6012. throw e;
  6013. }
  6014. resTfulResult.setSucceedMessage("操作成功");
  6015. return resTfulResult;
  6016. }
  6017. //校验物流单是否超过截止时间,如果超过截止时间,不允许派车并关闭运单
  6018. @Transactional(propagation = Propagation.REQUIRES_NEW)
  6019. public String verificationDeadline(Map<String, Object> params) throws Exception {
  6020. AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transPlanId")));
  6021. Object dueTime = amsTransPlan.getDueTime();
  6022. if (dueTime != null && DataChange.isExpireDay(dueTime)) {
  6023. //停用计划
  6024. if (amsPlanChildMapper.countExecuteTransOrder(params) > 0) {
  6025. return "超过截止时间,禁止派车,该计划下已有正在执行的运输订单,不能停用!";
  6026. }
  6027. //推送大宗
  6028. Map<String, Object> dzMap = new HashMap<>();
  6029. dzMap.put("wldh", amsTransPlan.getSerialNumber());
  6030. dzMap.put("action", 1);
  6031. dzMap.put("closename", params.get("userName"));
  6032. daZongUtil.execute("30010000015", new Map[]{dzMap});
  6033. //更新计划下未接收的运单
  6034. amsTransPlan.setDeleted(new BigDecimal(3));
  6035. amsTransPlan.setUpdateUsername(params.get("userName").toString());
  6036. amsTransPlan.setUpdateTime(new Date());
  6037. amsTransPlanMapper.updateByPrimaryKey(amsTransPlan);
  6038. amsPlanChildMapper.updateUnExcuteOrder(params);
  6039. return "超过物流单截止时间,派车失败,物流单自动停用!";
  6040. } else {
  6041. return "OK";
  6042. }
  6043. }
  6044. //采购-修改原发数量
  6045. public String modifyChange(Map<String, Object> params) throws Exception {
  6046. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transOrderId")));
  6047. if (omsTransOrder.getDeleted().compareTo(new BigDecimal(2)) == 0) {
  6048. throw new Exception("已完成运单不允许修改!");
  6049. }
  6050. //修改运单原发数量
  6051. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transOrderChildId")));
  6052. omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(params.get("materialNumber")));
  6053. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  6054. //修改大宗原发数量
  6055. Map<String, Object> dzMap = new HashMap<>();
  6056. dzMap.put("serialNumber", omsTransOrder.getSerialNumber());
  6057. dzMap.put("materialNumber",omsOrderChild.getMaterialNumber());
  6058. String s = dzFeign.modifyChange(dzMap);
  6059. if (!s.equals("OK")) {
  6060. throw new Exception("大宗推送失败!");
  6061. }
  6062. return "操作成功!";
  6063. }
  6064. public String getNetWeight(Map<String, Object> params) {
  6065. //获取缺少重量的数据
  6066. List<Map<String, Object>> transOrderNoNetWeight = omsTransOrderMapper.getTransOrderNoNetWeight(params);
  6067. return "同步成功!";
  6068. }
  6069. @Transactional(rollbackFor = Exception.class)
  6070. public String correctTransOrder(Map<String, Object> mapVal) throws Exception {
  6071. List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapVal.get("mapList");
  6072. for(Map<String,Object> map : mapList) {
  6073. Map<String,Object> stringObjectMap = dzFeign.getRightWeightInfo(map);
  6074. if(stringObjectMap.get("tzdid") == null) {
  6075. throw new Exception("未匹配到,请确定是否需要修正!");
  6076. }
  6077. //根据通知单id查询计划ID
  6078. Map<String,Object> planChildMap = omsOrderChildMapper.getPlanChildId(stringObjectMap);
  6079. if(planChildMap == null || planChildMap.get("planChildId") == null || planChildMap.get("materialId") == null) {
  6080. throw new Exception("未匹配到计划,请先制订计划后再修正!");
  6081. }
  6082. //更新物料
  6083. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId")));
  6084. omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planChildMap.get("materialId")));
  6085. omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planChildMap.get("planChildId")));
  6086. entityDispose.disposeOrderChild(omsOrderChild);
  6087. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  6088. }
  6089. return "操作成功";
  6090. }
  6091. //@Transactional(rollbackFor = Exception.class)
  6092. public int fixedDispatch() throws Exception {
  6093. //查询未派车状态数据
  6094. Map<String, Object> map = new HashMap<>();
  6095. map.put("alternateFields30", "1");
  6096. List<AmsTransRequirement> amsTransRequirements = amsTransRequirementMapper.selectByParametersSt(map);
  6097. for (AmsTransRequirement amsTransRequirement : amsTransRequirements) {
  6098. try {
  6099. Map<String, Object> map2 = new HashMap<>();
  6100. map2.put("transRequirementId", amsTransRequirement.getTransRequirementId());
  6101. List<AmsRequirementChild> amsRequirementChildren = amsRequirementChildMapper.selectByParameters(map2);
  6102. AmsRequirementChild amsRequirementChild = amsRequirementChildren.get(0);
  6103. String[] capacityIds = null;
  6104. String[] driverIds = null;
  6105. capacityIds = amsTransRequirement.getAlternateFields16().split("','");
  6106. Set<String> capacityIdSet=new HashSet<String>(Arrays.asList(capacityIds));
  6107. String[] capacityIdsAll = capacityIdSet.toArray(new String[capacityIdSet.size()]);
  6108. driverIds = amsTransRequirement.getAlternateFields22().split(",");
  6109. List<Map<String, Object>> list = new ArrayList<>();
  6110. for (int i = 0; i < capacityIdsAll.length; i++) {
  6111. //查询派车证司机
  6112. List<String> drivers = amsTransRequirementMapper.getCapacityDriverById(capacityIds[i], driverIds);
  6113. for (String driver : drivers) {
  6114. Map<String, Object> item = new HashMap<>();
  6115. item.put("capacityId", capacityIds[i]);
  6116. item.put("driverId", driver);
  6117. item.put("materialNumber", 0);
  6118. item.put("taskType", "正常作业");
  6119. list.add(item);
  6120. }
  6121. }
  6122. //生成计划
  6123. Map<String, Object> directMap = new HashMap<>();
  6124. directMap.put("requirementChildId", amsRequirementChild.getRequirementChildId());
  6125. directMap.put("carrierId", 37019);
  6126. directMap.put("userId", "admin");
  6127. directMap.put("userName", "派车证自动新增");
  6128. directMap.put("materialNumber", amsRequirementChild.getMaterialNumber());
  6129. directMap.put("transTruckNumber", amsRequirementChild.getTransTruckNumber());
  6130. directMap.put("businessTypeName", amsTransRequirement.getBusinessTypeName());
  6131. directMap.put("capacityIds", capacityIds);
  6132. directMap.put("driverIds", driverIds);
  6133. BigDecimal planChildId = null;
  6134. directMap.put("list", list);
  6135. directMap.put("userId", "admin");
  6136. directMap.put("userName", "派车证自动新增");
  6137. directMap.put("lineId", amsTransRequirement.getLineId());
  6138. directMap.put("businessType", amsTransRequirement.getBusinessType());
  6139. try {
  6140. omsTransOrderService.dispatchTask(directMap);
  6141. amsTransRequirement.setAlternateFields30("0");
  6142. amsTransRequirementMapper.updateByPrimaryKeySelective(amsTransRequirement);
  6143. } catch (Exception e) {
  6144. e.printStackTrace();
  6145. continue;
  6146. }
  6147. } catch (Exception e) {
  6148. e.printStackTrace();
  6149. throw new Exception(amsTransRequirement.getSerialNumber() + ":派车失败!");
  6150. }
  6151. }
  6152. return 1;
  6153. }
  6154. public List<Map<String,Object>> getZtZxShiji(Map<String, Object> map) {
  6155. return omsTransOrderMapper.getZtZxShiji(map);
  6156. }
  6157. @Transactional(rollbackFor = Exception.class)
  6158. public String disposeMatchLoadData(Map<String, Object> map) {
  6159. List<Map<String,Object>> zjMapList = (List<Map<String, Object>>) map.get("zjMapList");
  6160. List<Map<String,Object>> dcMapList = (List<Map<String, Object>>) map.get("dcMapList");
  6161. for(Map<String, Object> stringObjectMap : zjMapList) {
  6162. //首先把选中的装机数据的吨位和运单id给清空
  6163. BigDecimal transOrderChildId = DataChange.dataToBigDecimal(stringObjectMap.get("transOrderChildId"));
  6164. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId);
  6165. omsOrderChild.setActualWeight(null);
  6166. omsOrderChild.setNetWeight(null);
  6167. omsOrderChild.setAlternateFields20(null);
  6168. omsOrderChildMapper.updateByPrimaryKey(omsOrderChild);
  6169. }
  6170. //上面把所有吨位清空后,将之进行重新匹配
  6171. for(Map<String, Object> stringObjectMap1 : dcMapList) {
  6172. BigDecimal transOrderChildIdDc = DataChange.dataToBigDecimal(stringObjectMap1.get("transOrderChildId"));
  6173. BigDecimal transOrderIdDc = DataChange.dataToBigDecimal(stringObjectMap1.get("transOrderId"));
  6174. OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildIdDc);
  6175. if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) {
  6176. continue;
  6177. }
  6178. OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderIdDc);
  6179. //匹配装载机信息
  6180. //获取大宗单据的物料信息与区间
  6181. String materialName = omsOrderChild.getMaterialName();
  6182. if(materialName == null) {
  6183. continue;
  6184. }
  6185. if("公司".equals(omsTransOrder.getCapacityNumber())) {
  6186. continue;
  6187. }
  6188. if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) {
  6189. continue;
  6190. }
  6191. //匹配无烟煤数据
  6192. Map<String, Object> objectObjectHashMap = new HashMap<>();
  6193. objectObjectHashMap.put("zjMapList",zjMapList);
  6194. objectObjectHashMap.put("netWeightTime", omsTransOrder.getIssueTime());
  6195. List<BigDecimal> orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap);
  6196. if (orderChildIds == null || orderChildIds.size() == 0) {
  6197. continue;
  6198. }
  6199. //平分
  6200. BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()), 2, 4);
  6201. for (BigDecimal orderChildId : orderChildIds) {
  6202. OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId);
  6203. if (omsOrderChild1.getAlternateFields20() != null) {
  6204. String[] stringList = omsOrderChild1.getAlternateFields20().split(",");
  6205. if (Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) {
  6206. continue;
  6207. }
  6208. }
  6209. omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight));
  6210. omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight());
  6211. omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId());
  6212. omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1);
  6213. }
  6214. //新增对照关系表
  6215. }
  6216. //
  6217. return "操作成功!";
  6218. }
  6219. public void sendMessageToHr(String title,String sendMessage){
  6220. try {
  6221. HashMap<String, Object> sendMap = new HashMap<>();
  6222. sendMap.put("userId", "admin");
  6223. sendMap.put("userName","admin");
  6224. sendMap.put("title", title);
  6225. sendMap.put("sendMessage", sendMessage);
  6226. sendMap.put("sendType", "01");//01:通知消息
  6227. String websocketId = "宏瑞物流";
  6228. RESTfulResult resTfulResult = null;
  6229. resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap);
  6230. if (resTfulResult != null && !resTfulResult.isSucceed()) {
  6231. log.error("宏瑞物流信息推送:" + resTfulResult.getMessage());
  6232. }
  6233. } catch (Exception e) {
  6234. log.error("宏瑞物流信息推送:{}", e);
  6235. e.printStackTrace();
  6236. }
  6237. }
  6238. }