bed720c87f1bced08e89b4ee2491872f84c821e4.svn-base 256 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893
  1. package QCM.JHY01.JHY0102;
  2. import CoreFS.SA01.CoreIComponent;
  3. import CoreFS.SA06.CoreReturnObject;
  4. import QCM.COMMUNAL.VO.QcmJudgeOperateLog;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.apache.ibatis.session.SqlSession;
  10. import org.apache.log4j.Logger;
  11. import java.io.*;
  12. import java.math.BigDecimal;
  13. import java.net.HttpURLConnection;
  14. import java.net.URL;
  15. import java.net.URLEncoder;
  16. import java.sql.CallableStatement;
  17. import java.sql.Connection;
  18. import java.sql.SQLException;
  19. import java.text.SimpleDateFormat;
  20. import java.util.*;
  21. public class Send2 extends CoreIComponent{
  22. private Logger logger = Logger.getLogger(this.getClass().getName());
  23. CoreReturnObject cro = new CoreReturnObject();
  24. SqlSession SqlSession =
  25. QCM.COMMUNAL.SqlSessionBuilder.openSqlSession();
  26. QCM.COMMUNAL.OrderSqMapper mapper = SqlSession.getMapper(QCM.COMMUNAL.OrderSqMapper.class);
  27. /**
  28. * 撤销委托接口
  29. * @param Entrust
  30. * @return
  31. */
  32. public CoreReturnObject CancelLIMES(String Entrust,String UserName,String zhyy){
  33. try {
  34. JSONArray arr = new JSONArray();
  35. String[] ja=Entrust.split(",");
  36. String msInfo="";
  37. String resultlist ="";
  38. TreeSet<String> treeSet = new TreeSet<String>();
  39. if (ja!=null && ja.length>0) {
  40. for (int i = 0; i < ja.length; i++) {
  41. String sp = ja[i];
  42. treeSet.add(sp);
  43. JSONObject obj = new JSONObject();
  44. obj.put("id",sp);
  45. arr.add(obj);
  46. if ("".equals(msInfo)) {
  47. msInfo="'"+sp+"'";
  48. }else{
  49. msInfo=msInfo+"'"+sp+"'";
  50. }
  51. if (i !=ja.length-1) {
  52. msInfo=msInfo+",";
  53. }
  54. }
  55. }
  56. //循环每个取样编号是否已判定
  57. for (String trs : treeSet) {
  58. //判断是否是夹杂初样
  59. String sqltrs = "SELECT d.* from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"' and FREQ_CODE='D' and SMP_TYPE_CODE='0' ";
  60. List<HashMap> hmDD = mapper.query(sqltrs.toString());
  61. String QuerySql="";
  62. String intstrd="0";
  63. if(hmDD!=null && hmDD.size()>=1){
  64. QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS <> '0' and "
  65. + " t.SMP_NO in (SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"' "
  66. + " union all select d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d where d.Quote_Consign_No = '"+trs+"') ";
  67. intstrd="1";
  68. }else{
  69. QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS <> '0' and t.JUDGE_RESULT_CODE is not null and "
  70. + " t.SMP_NO=(SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"')";
  71. }
  72. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  73. BigDecimal cou2 = (BigDecimal) hashMaplist2.get(0).get("CNUM");
  74. String coun2 = cou2.toString();
  75. Integer integ2 = Integer.parseInt(coun2);
  76. if(integ2 >= 1){
  77. if("1".equals(intstrd)){
  78. cro.setV_errCode(-1);
  79. cro.setV_errMsg("当前炉已有夹杂材质已判定,不可撤销,请核实数据!");
  80. return cro;
  81. }else{
  82. cro.setV_errCode(-1);
  83. cro.setV_errMsg("取样编号【"+trs+"】材质已判定,不可撤销,请核实数据!");
  84. return cro;
  85. }
  86. }
  87. //判断中厚板预测轧批
  88. String sqlzbh = "SELECT d.* from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"' and d.PLINE_CODE in ('ZB1','HB1') and SHOULD_SAMPLE is not null ";
  89. List<HashMap> hmzbh = mapper.query(sqlzbh.toString());
  90. if(hmzbh!=null && hmzbh.size()>=1){
  91. HashMap obj=hmzbh.get(0);
  92. if(("0".equals(obj.get("SHOULD_SAMPLE")) || "2".equals(obj.get("SHOULD_SAMPLE"))) && obj.get("SMP_TYPE_CODE").equals("0")){
  93. cro.setV_errCode(-1);
  94. cro.setV_errMsg("当前勾选的轧批【"+obj.get("BATCH_NO")+"】是预测抽样!请正确操作按钮");
  95. return cro;
  96. }
  97. }
  98. //夹杂引用轧批不可撤销
  99. String QuerySql2=" SELECT d.* from QCM_JHY_SAMPLE_CONSIGN_D d "
  100. + " WHERE d.SPECIMEN_NO='"+trs+"' and d.FREQ_CODE='D' and d.QUOTE_CONSIGN_NO is not null ";
  101. List<HashMap> hmD = mapper.query(QuerySql2.toString());
  102. if(hmD!=null && hmD.size()>=1){
  103. cro.setV_errCode(-1);
  104. cro.setV_errMsg("请选择发送到LIMS送样的轧批,取样编号【"+trs+"】不是送样的轧批,不可撤销,请核实数据!");
  105. return cro;
  106. }
  107. }
  108. String contnum = "0";
  109. //循环每个取样编号是否是引用取样编号
  110. for (String trs : treeSet) {
  111. //当前取样编号下的项目全部引用了 就表示没有发送到LIMS那边
  112. String stryy=" select * from qcm_jhy_sample_consign_d_item i where SPECIMEN_NO='"+trs+"' and QUOTE_MEMO is null and SEQ<50 ";
  113. List<HashMap> hmyy = mapper.query(stryy.toString());
  114. if(hmyy==null || hmyy.size()<=0){
  115. String QuerySql="SELECT t.* from QCM_JHY_SAMPLE_CONSIGN_D t"
  116. + " WHERE t.SPECIMEN_NO='"+trs+"' and t.FREQ_CODE <> 'D' "
  117. + " and t.send_memo = '有引用' and t.QUOTE_MEMO = '引用实绩' ";
  118. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  119. if(hashMaplist2!=null && hashMaplist2.size()>=1){
  120. List<HashMap> itemhm=null;
  121. List<HashMap> insphm =null;
  122. if(hashMaplist2.get(0).get("SMP_TYPE_CODE").equals("1")){//复样
  123. QuerySql="";
  124. QuerySql=" SELECT t.* from qcm_jhy_sample_consign_d_item t "
  125. + " WHERE t.SPECIMEN_NO='"+trs+"' and t.QUOTE_MEMO is not null and SEQ<50 ";
  126. itemhm = mapper.query(QuerySql.toString());
  127. QuerySql="";
  128. QuerySql=" SELECT t.* from QCM_JHY_INSP_PHYSICS t "
  129. + " WHERE t.SPECIMEN_NO='"+trs+"' and SEQ<50 ";
  130. insphm = mapper.query(QuerySql.toString());
  131. }else{
  132. QuerySql="";
  133. QuerySql=" SELECT t.* from qcm_jhy_sample_consign_d_item t "
  134. + " WHERE t.SPECIMEN_NO='"+trs+"' and t.QUOTE_MEMO is not null ";
  135. itemhm = mapper.query(QuerySql.toString());
  136. QuerySql="";
  137. QuerySql=" SELECT t.* from QCM_JHY_INSP_PHYSICS t "
  138. + " WHERE t.SPECIMEN_NO='"+trs+"' ";
  139. insphm = mapper.query(QuerySql.toString());
  140. }
  141. if(itemhm.size() == insphm.size()){
  142. contnum = "1";
  143. String sql = "";
  144. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1', "
  145. + " SEND_ID ='',SEND_NAME='',SEND_TIME='',SEND_MEMO='',QUOTE_MEMO = '',SAMPLE_DELIVERY_TIME='' "
  146. + " where SPECIMEN_NO = '"+trs+"' ";
  147. mapper.UpdateQcmWt(sql);
  148. sql="";
  149. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D_ITEM SET QUOTE_MEMO='' where SPECIMEN_NO = '"+trs+"' ";
  150. mapper.UpdateQcmWt(sql);
  151. if(hashMaplist2.get(0).get("SMP_TYPE_CODE").equals("1")){
  152. //删除 实绩表数据
  153. sql="";
  154. sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO = '"+trs+"' and t.QUOTE_SPECIMEN_NO is null and SEQ<50 ";
  155. mapper.delete(sql.toString());
  156. }else{
  157. //删除 实绩表数据
  158. sql="";
  159. sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO = '"+trs+"' and t.QUOTE_SPECIMEN_NO is null";
  160. mapper.delete(sql.toString());
  161. }
  162. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  163. qjog.setOperate_name(UserName);
  164. qjog.setBatchno(hashMaplist2.get(0).get("BATCH_NO") == null ?"":hashMaplist2.get(0).get("BATCH_NO").toString());
  165. qjog.setOperate_type("撤销检验委托");
  166. qjog.setParams(hashMaplist2.get(0).get("MATERIAL_NO") == null ?"":hashMaplist2.get(0).get("MATERIAL_NO").toString());
  167. qjog.setProd_line(hashMaplist2.get(0).get("PLINE_CODE") == null ?"":hashMaplist2.get(0).get("PLINE_CODE").toString());
  168. qjog.setMemo(hashMaplist2.get(0).get("SPECIMEN_NO").toString());
  169. mapper.insertQcmJudgeOperateLog(qjog);
  170. }
  171. }
  172. if(contnum.equals("1")){
  173. SqlSession.commit();
  174. SqlSession.close();
  175. cro.setV_errCode(1);
  176. cro.setV_errMsg("撤销引用成功");
  177. return cro;
  178. }
  179. }
  180. }
  181. //查询取样编号是否状态是已待确认,只有待确认的才能够撤销
  182. StringBuffer sqlucomm = new StringBuffer();
  183. //调用LZMES撤销委托接口,暂时没有
  184. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Revokeghtask";//调用url
  185. String result = "";
  186. try{
  187. JSONObject tarObj=new JSONObject();
  188. Date date=new Date();
  189. SimpleDateFormat simleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  190. String ret=simleDateFormat.format(date);//系统时间
  191. //主表数据
  192. tarObj.put("revokeUser", UserName+"C");
  193. tarObj.put("revokeReason", zhyy);
  194. tarObj.put("revokeTime", ret);
  195. tarObj.put("revokeOrderList", arr);
  196. result = httpURLPOSTCase(urlStr,tarObj.toString());//调用url
  197. //result = "200";//调用url
  198. if (result == null||result.equals("null") || result.equals("")) {
  199. cro.setV_errCode(-1);
  200. cro.setV_errMsg("撤回发送LIMS系统失败!返回值:"+result);
  201. return cro;
  202. }
  203. resultlist =result.substring(8, 11);
  204. JSONObject jobject=JSON.parseObject(result);
  205. String limsCode=jobject.getString("code");
  206. String limsMessage=jobject.getString("message");
  207. if(limsMessage.equals("样品不存在") && limsCode.equals("500")){
  208. resultlist="200";
  209. }
  210. //resultlist ="200";
  211. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  212. cro.setV_errCode(-1);
  213. cro.setV_errMsg("撤回发送数据Lims失败!返回值:"+result);
  214. return cro;
  215. }
  216. }catch(Exception e){
  217. cro.setV_errCode(-1);
  218. cro.setV_errMsg("撤回发送数据Lims失败"+e.getMessage());
  219. return cro;
  220. }
  221. if (resultlist.equals("200")) {
  222. //记录撤回的数据
  223. String sqlDel = " Insert into QCM_JHY_SAMPLE_CONSIGN_D_DEL(SMP_NO,SPECIMEN_NO,HEAT_NO,BATCH_NO,INSPECTION_LOT,FREQ_CODE,FREQ_NAME,MATERIAL_NO,SMP_TYPE_CODE,SMP_TYPE_NAME,CONSIGN_NO,CONSIGN_NO_SEQ,TEST_QTY,SMP_QTY,SMP_LOCATION,BOARD_NO,QUOTE_CONSIGN_NO,OLD_CONSIGN_NO,PLINE_CODE,PLINE_NAME,STATUS,VALIDFLAG,SOURCE,GUID,SEND_ID,SEND_NAME,SEND_TIME,CHEM_ITEM,PRODUCT_CNT,CREATE_TIME,SMP_LOCATION_CODE,MEMO,WEIGHT,WEIGHT_STD,WEIGHT_SFD,SPECIMENNOZH,SEND_MEMO,ITEM_FLAG,CREATETIMEDEL,CREATENAMEDEL) "
  224. + " select SMP_NO,SPECIMEN_NO,HEAT_NO,BATCH_NO,INSPECTION_LOT,FREQ_CODE,FREQ_NAME,MATERIAL_NO,SMP_TYPE_CODE,SMP_TYPE_NAME,CONSIGN_NO,CONSIGN_NO_SEQ,TEST_QTY,SMP_QTY,SMP_LOCATION,BOARD_NO,QUOTE_CONSIGN_NO,OLD_CONSIGN_NO,PLINE_CODE,PLINE_NAME,STATUS,VALIDFLAG,SOURCE,GUID,SEND_ID,SEND_NAME,SEND_TIME,CHEM_ITEM,PRODUCT_CNT,CREATE_TIME,SMP_LOCATION_CODE,MEMO,WEIGHT,WEIGHT_STD,WEIGHT_SFD,'1',SEND_MEMO,ITEM_FLAG,SYSDATE,'"+UserName+"' from QCM_JHY_SAMPLE_CONSIGN_D d"
  225. + " where SPECIMEN_NO in ("+msInfo+")";
  226. mapper.insert(sqlDel);
  227. //查询是不是卷板的39 49 59订单
  228. String rzltsql="select t.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  229. +" where t.smp_no = r.smp_no and t.pline_code in ('RZ1','LT1') "
  230. +" and (r.design_key like '39%' or r.design_key like '49%' or r.design_key like '59%') "
  231. +" and t.specimen_no in ("+msInfo+") ";
  232. List<HashMap> hashMapRzlt = mapper.query(rzltsql.toString());
  233. if(hashMapRzlt!=null && hashMapRzlt.size()>=1){
  234. String updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1', "
  235. + " SEND_ID ='',SEND_NAME='',SEND_TIME='' where SPECIMEN_NO in ("+msInfo+")";
  236. mapper.UpdateQcmWt(updateSql);
  237. }else{
  238. String updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1',PLINE_CODE_LIMS='',SEND_ID ='',SEND_NAME='',SEND_TIME='', "
  239. + " SAMPLE_DELIVERY_TIME='',PRINT_SEQ='',PRINT_SEQJ='',PRINT_LOG='',SEND_SEQ='' "
  240. + " where SPECIMEN_NO in ("+msInfo+")";
  241. mapper.UpdateQcmWt(updateSql);
  242. //删除 实绩表数据
  243. String sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO in ("+msInfo+") and t.QUOTE_SPECIMEN_NO is null";
  244. mapper.delete(sql.toString());
  245. }
  246. for (String trs : treeSet) {
  247. //热轧
  248. String sql="";
  249. sql ="select * from QCM_JHY_SAMPLE_CONSIGN_D where SPECIMEN_NO = '"+trs+"' and PLINE_CODE='RZ1' ";
  250. List<HashMap> hmRZ1 = mapper.query(sql.toString());
  251. if(hmRZ1!=null && hmRZ1.size()>=1 && hmRZ1.get(0).get("PLINE_CODE").equals("RZ1")){
  252. //热轧 清空有无取样
  253. sql="";
  254. sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  255. + " set t.SAMPL_PICK_RY = '' "
  256. + " where t.SPECIMEN_NO = '"+trs+"' AND t.PLINE_CODE='RZ1' ";
  257. mapper.UpdateQcmWt(sql.toString());
  258. }
  259. //中厚板 引用清除 五个项目 四个引用 一个发送LIMS 撤销之后全部实绩删除 还原最初
  260. sql="";
  261. sql ="select * from QCM_JHY_SAMPLE_CONSIGN_D where SPECIMEN_NO = '"+trs+"' and QUOTE_MEMO='引用实绩' and PLINE_CODE in ('ZB1', 'HB1') ";
  262. List<HashMap> hmap = mapper.query(sql.toString());
  263. if(hmap!=null && hmap.size()>=1){
  264. sql="";
  265. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET SEND_MEMO='',QUOTE_MEMO = '',SAMPLE_DELIVERY_TIME='' where SPECIMEN_NO = '"+trs+"' ";
  266. mapper.UpdateQcmWt(sql);
  267. sql="";
  268. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D_ITEM SET QUOTE_MEMO='' where SPECIMEN_NO = '"+trs+"' ";
  269. mapper.UpdateQcmWt(sql);
  270. }
  271. //中厚板 夹杂初样撤销
  272. sql="";
  273. sql="select * from qcm_jhy_sample_consign_d t where t.freq_code = 'D' AND T.SMP_TYPE_CODE = '0' and t.SPECIMEN_NO = '"+trs+"' ";
  274. List<HashMap> hmDD = mapper.query(sql.toString());
  275. if(hmDD!=null && hmDD.size()>=1){
  276. sql="";
  277. sql="select * from qcm_jhy_sample_consign_d t where t.freq_code = 'D' AND T.SMP_TYPE_CODE = '0' and t.quote_consign_no = '"+trs+"' ";
  278. List<HashMap> hmD = mapper.query(sql.toString());
  279. if(hmD!=null && hmD.size()>=1){
  280. for (int i = 0; i < hmD.size(); i++) {
  281. sql="";
  282. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',QUOTE_CONSIGN_NO='',SEND_ID = '',SEND_NAME='',SEND_TIME='' where SPECIMEN_NO = '"+hmD.get(i).get("SPECIMEN_NO")+"' ";
  283. mapper.UpdateQcmWt(sql);
  284. sql="";
  285. sql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D_ITEM SET QUOTE_SPECIMEN_NO='',QUOTE_SEQ = '' where SPECIMEN_NO = '"+hmD.get(i).get("SPECIMEN_NO")+"' ";
  286. mapper.UpdateQcmWt(sql);
  287. }
  288. }
  289. }
  290. }
  291. }
  292. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  293. List<HashMap> lists = mapper.query(sqlLog);
  294. for (HashMap list : lists) {
  295. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  296. qjog.setOperate_name(UserName);
  297. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  298. qjog.setOperate_type("撤销检验委托");
  299. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  300. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  301. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  302. mapper.insertQcmJudgeOperateLog(qjog);
  303. }
  304. SqlSession.commit();
  305. }catch (Exception e) {
  306. // TODO Auto-generated catch block
  307. e.printStackTrace();
  308. SqlSession.rollback();
  309. cro.setV_errCode(-1);
  310. cro.setV_errMsg("撤销委托失败,请联系管理员查看问题!");
  311. return cro;
  312. }finally {
  313. SqlSession.close();
  314. }
  315. cro.setV_errCode(1);
  316. cro.setV_errMsg("撤销发送成功");
  317. return cro;
  318. }
  319. /**
  320. * 撤销同批合并发送 撤销合并委托 中厚板
  321. * @param Entrust
  322. * @return
  323. */
  324. public CoreReturnObject ZHBCancelLIMES(String Entrust,String UserName,String zhyy){
  325. try {
  326. JSONArray arr = new JSONArray();
  327. String[] ja=Entrust.split(",");
  328. String msInfo="";
  329. String resultlist ="";
  330. TreeSet<String> treeSet = new TreeSet<String>();
  331. if (ja!=null && ja.length>0) {
  332. for (int i = 0; i < ja.length; i++) {
  333. String sp = ja[i];
  334. treeSet.add(sp);
  335. JSONObject obj = new JSONObject();
  336. obj.put("id",sp);
  337. arr.add(obj);
  338. if ("".equals(msInfo)) {
  339. msInfo="'"+sp+"'";
  340. }else{
  341. msInfo=msInfo+"'"+sp+"'";
  342. }
  343. if (i !=ja.length-1) {
  344. msInfo=msInfo+",";
  345. }
  346. }
  347. }
  348. //循环每个取样编号是否已判定
  349. for (String trs : treeSet) {
  350. String QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS <> '0' and t.JUDGE_RESULT_CODE is not null "
  351. + " and t.SMP_NO in (SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.ZHB_SPECIMEN_NO='"+trs+"')";
  352. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  353. BigDecimal cou2 = (BigDecimal) hashMaplist2.get(0).get("CNUM");
  354. String coun2 = cou2.toString();
  355. Integer integ2 = Integer.parseInt(coun2);
  356. if(integ2 >= 1){
  357. cro.setV_errCode(-1);
  358. cro.setV_errMsg("合并取样编号【"+trs+"】委托下材质已判定,不可撤销,请核实数据!");
  359. return cro;
  360. }
  361. }
  362. //查询取样编号是否状态是已待确认,只有待确认的才能够撤销
  363. StringBuffer sqlucomm = new StringBuffer();
  364. //调用LZMES撤销委托接口,暂时没有
  365. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Revokeghtask";//调用url
  366. String result = "";
  367. try{
  368. JSONObject tarObj=new JSONObject();
  369. Date date=new Date();
  370. SimpleDateFormat simleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  371. String ret=simleDateFormat.format(date);//系统时间
  372. //主表数据
  373. tarObj.put("revokeUser", UserName+"C");
  374. tarObj.put("revokeReason", zhyy);
  375. tarObj.put("revokeTime", ret);
  376. tarObj.put("revokeOrderList", arr);
  377. result = httpURLPOSTCase(urlStr,tarObj.toString());//调用url
  378. //result = "200";//调用url
  379. if (result == null||result.equals("null") || result.equals("")) {
  380. cro.setV_errCode(-1);
  381. cro.setV_errMsg("撤销同批合并发送LIMS系统失败!返回值:"+result);
  382. return cro;
  383. }
  384. resultlist =result.substring(8, 11);
  385. //resultlist ="200";
  386. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  387. cro.setV_errCode(-1);
  388. cro.setV_errMsg("撤销同批合并发送数据Lims失败!"+result);
  389. return cro;
  390. }
  391. }catch(Exception e){
  392. cro.setV_errCode(-1);
  393. cro.setV_errMsg("撤销同批合并发送数据Lims失败"+e.getMessage());
  394. return cro;
  395. }
  396. if (resultlist.equals("200")) {
  397. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.ZHB_SPECIMEN_NO in ("+msInfo+")";
  398. List<HashMap> lists = mapper.query(sqlLog);
  399. for (HashMap list : lists) {
  400. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  401. qjog.setOperate_name(UserName);
  402. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  403. qjog.setOperate_type("撤销同批合并委托");
  404. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  405. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  406. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  407. mapper.insertQcmJudgeOperateLog(qjog);
  408. }
  409. //删除 实绩表数据
  410. String sql = "";
  411. sql = "DELETE QCM_JHY_INSP_PHYSICS t "
  412. + " where t.SPECIMEN_NO in (select d.SPECIMEN_NO from QCM_JHY_SAMPLE_CONSIGN_D d where d.ZHB_SPECIMEN_NO in ("+msInfo+") ) "
  413. + " and t.QUOTE_SPECIMEN_NO is null";
  414. mapper.delete(sql.toString());
  415. //合并表
  416. String updateSql="";
  417. updateSql="DELETE QCM_JHY_ZHB_PHYSICS where SPECIMEN_NO in ("+msInfo+")";
  418. mapper.delete(updateSql);
  419. //itme表
  420. updateSql="";
  421. updateSql="UPDATE qcm_jhy_sample_consign_d_item SET ZHB_SPECIMEN_NO='' where ZHB_SPECIMEN_NO in ("+msInfo+")";
  422. mapper.UpdateQcmWt(updateSql);
  423. //D表
  424. updateSql="";
  425. updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1',PLINE_CODE_LIMS='', "
  426. + " SEND_ID ='',SEND_NAME='',SEND_TIME='',ZHB_SPECIMEN_NO='',SAMPLE_DELIVERY_TIME='',PRINT_SEQ='',PRINT_SEQJ='' "
  427. + " where ZHB_SPECIMEN_NO in ("+msInfo+")";
  428. mapper.UpdateQcmWt(updateSql);
  429. }
  430. SqlSession.commit();
  431. }catch (Exception e) {
  432. // TODO Auto-generated catch block
  433. e.printStackTrace();
  434. SqlSession.rollback();
  435. cro.setV_errCode(-1);
  436. cro.setV_errMsg("撤销委托失败,请联系管理员查看问题!");
  437. return cro;
  438. }finally {
  439. SqlSession.close();
  440. }
  441. cro.setV_errCode(1);
  442. cro.setV_errMsg("撤销发送成功");
  443. return cro;
  444. }
  445. /**
  446. * 热轧 撤销人工抽样
  447. * @param Entrust
  448. * @return
  449. */
  450. public CoreReturnObject CancelLIMESRZ(String Entrust,String UserName,String zhyy){
  451. try {
  452. JSONArray arr = new JSONArray();
  453. String[] ja=Entrust.split(",");
  454. String msInfo="";
  455. String resultlist ="";
  456. TreeSet<String> treeSet = new TreeSet<String>();
  457. if (ja!=null && ja.length>0) {
  458. for (int i = 0; i < ja.length; i++) {
  459. String sp = ja[i];
  460. treeSet.add(sp);//获取取样编号
  461. JSONObject obj = new JSONObject();
  462. obj.put("id",sp);
  463. arr.add(obj);
  464. if ("".equals(msInfo)) {
  465. msInfo="'"+sp+"'";
  466. }else{
  467. msInfo=msInfo+"'"+sp+"'";
  468. }
  469. if (i !=ja.length-1) {
  470. msInfo=msInfo+",";
  471. }
  472. }
  473. }
  474. if(treeSet.size()>1){
  475. cro.setV_errCode(-1);
  476. cro.setV_errMsg("撤销人工抽样只能选择取样的钢卷号!");
  477. return cro;
  478. }
  479. //循环每个取样编号是否已判定
  480. for (String trs : treeSet) {
  481. String QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS='1' and "
  482. + " t.SMP_NO=(SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"')";
  483. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  484. BigDecimal cou2 = (BigDecimal) hashMaplist2.get(0).get("CNUM");
  485. String coun2 = cou2.toString();
  486. Integer integ2 = Integer.parseInt(coun2);
  487. if(integ2 >= 1){
  488. cro.setV_errCode(-1);
  489. cro.setV_errMsg("取样编号【"+trs+"】材质已判定,不可撤销,请核实数据!");
  490. return cro;
  491. }
  492. }
  493. //查询取样编号是否状态是已待确认,只有待确认的才能够撤销
  494. /* StringBuffer sqlucomm = new StringBuffer();
  495. sqlucomm.append("SELECT STATUS,SPECIMEN_NO FROM QCM_JHY_SAMPLE_CONSIGN_D WHERE SPECIMEN_NO IN ("+msInfo+")");
  496. List<HashMap> lists=mapper.query(sqlucomm.toString());
  497. if (lists!=null && lists.size()>0) {
  498. for (HashMap list : lists) {
  499. if (!"2".equals((String)list.get("STATUS"))) {//1
  500. cro.setV_errCode(-1);
  501. cro.setV_errMsg("取样编号【"+list.get("SPECIMEN_NO")+"】发送状态已完成,请核实数据!");
  502. return cro;
  503. }
  504. }
  505. }*/
  506. //调用LZMES撤销委托接口,暂时没有
  507. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Revokeghtask";//调用url
  508. String result = "";
  509. try{
  510. JSONObject tarObj=new JSONObject();
  511. Date date=new Date();
  512. SimpleDateFormat simleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  513. String ret=simleDateFormat.format(date);//系统时间
  514. //主表数据
  515. tarObj.put("revokeUser", UserName);
  516. tarObj.put("revokeReason", zhyy);
  517. tarObj.put("revokeTime", ret);
  518. tarObj.put("revokeOrderList", arr);
  519. result = httpURLPOSTCase(urlStr,tarObj.toString());//调用url
  520. if (result == null||result.equals("null") || result.equals("")) {
  521. cro.setV_errCode(-1);
  522. cro.setV_errMsg("撤回人工抽样发送LIMS系统失败!返回值:"+result);
  523. return cro;
  524. }
  525. resultlist =result.substring(8, 11);
  526. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  527. cro.setV_errCode(-1);
  528. cro.setV_errMsg("撤回人工抽样发送数据Lims失败!"+result);
  529. return cro;
  530. }
  531. }catch(Exception e){
  532. cro.setV_errCode(-1);
  533. cro.setV_errMsg("撤回人工抽样发送数据Lims失败"+e.getMessage());
  534. return cro;
  535. }
  536. if (resultlist.equals("200")) {
  537. for (String specimenNo : treeSet) {
  538. //热轧 清空有无取样
  539. String sqlR="";
  540. sqlR = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  541. + " set t.SAMPL_PICK_RY = '' "
  542. + " where t.SPECIMEN_NO = '"+specimenNo+"' AND t.PLINE_CODE='RZ1' ";
  543. mapper.UpdateQcmWt(sqlR.toString());
  544. String sql="select t1.RZ_ROLL_MANA_NO,t1.RZ_MIXROLL,t1.RZ_OLD_SAMPL_NO,t1.RZ_ROLL_SLAB_SEQ "
  545. +" from QCM_JHY_SAMPLE_CONSIGN_D t1 "
  546. +" where t1.validflag = '1' "
  547. +" and t1.STATUS in ('2','7') "
  548. +" and t1.pline_code = 'RZ1' "
  549. +" and t1.specimen_no = '"+specimenNo+"'";
  550. List<HashMap> hMap=mapper.query(sql.toString());
  551. if (hMap!=null || hMap.size()>0) {
  552. for (HashMap hm : hMap) {
  553. sql = "";
  554. sql = " update QCM_JHY_SAMPLE_R_ORD ord set ord.judge_status = '0' "
  555. +" where ord.pline_code = 'RZ1' and ord.smp_no in ( "
  556. +" select t.smp_no from QCM_JHY_SAMPLE_CONSIGN_D t "
  557. +" where RZ_ROLL_MANA_NO = '"+hm.get("RZ_ROLL_MANA_NO")+"' "
  558. +" and RZ_MIXROLL= '"+hm.get("RZ_MIXROLL")+"' "
  559. + " and RZ_OLD_SAMPL_NO= '"+hm.get("RZ_OLD_SAMPL_NO")+"'"
  560. +" ) ";
  561. mapper.UpdateQcmWt(sql.toString());
  562. String updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1',"
  563. + " SEND_ID ='',SEND_NAME='',SEND_TIME='', RZ_ROLL_MANA_NO='',RZ_MIXROLL='',"
  564. + " RZ_OLD_SAMPL_NO='',RZ_ROLL_SLAB_SEQ='',PRINT_LOG='', SEND_SEQ='', PRINT_SEQ='' "
  565. + " where RZ_ROLL_MANA_NO = '"+hm.get("RZ_ROLL_MANA_NO")+"' "
  566. + " and RZ_MIXROLL= '"+hm.get("RZ_MIXROLL")+"' "
  567. + " and RZ_OLD_SAMPL_NO= '"+hm.get("RZ_OLD_SAMPL_NO")+"' ";
  568. mapper.UpdateQcmWt(updateSql);
  569. }
  570. }
  571. }
  572. //删除 实绩表数据
  573. String sql = "";
  574. sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO in ("+msInfo+") and t.QUOTE_SPECIMEN_NO is null";
  575. mapper.delete(sql.toString());
  576. }
  577. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  578. List<HashMap> lists = mapper.query(sqlLog);
  579. for (HashMap list : lists) {
  580. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  581. qjog.setOperate_name(UserName);
  582. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  583. qjog.setOperate_type("撤销人工抽样");
  584. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  585. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  586. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  587. mapper.insertQcmJudgeOperateLog(qjog);
  588. }
  589. SqlSession.commit();
  590. }catch (Exception e) {
  591. // TODO Auto-generated catch block
  592. e.printStackTrace();
  593. SqlSession.rollback();
  594. cro.setV_errCode(-1);
  595. cro.setV_errMsg("撤销人工抽样委托失败,请联系管理员查看问题!");
  596. return cro;
  597. }finally {
  598. SqlSession.close();
  599. }
  600. cro.setV_errCode(1);
  601. cro.setV_errMsg("撤销人工抽样发送成功");
  602. return cro;
  603. }
  604. /**
  605. * 热轧 撤销人工送样
  606. * @param Entrust
  607. * @return
  608. */
  609. public CoreReturnObject CancelLimesRZXY(String Entrust,HashMap parmas){
  610. try {
  611. String UserName = parmas.get("USERNAME").toString();
  612. String zhyy = parmas.get("ZHYY").toString();
  613. JSONArray arr = new JSONArray();
  614. String[] ja=Entrust.split(",");
  615. String msInfo="";
  616. String resultlist ="";
  617. TreeSet<String> treeSet = new TreeSet<String>();
  618. if (ja!=null && ja.length>0) {
  619. for (int i = 0; i < ja.length; i++) {
  620. String sp = ja[i];
  621. treeSet.add(sp);//获取取样编号
  622. JSONObject obj = new JSONObject();
  623. obj.put("id",sp);
  624. arr.add(obj);
  625. if ("".equals(msInfo)) {
  626. msInfo="'"+sp+"'";
  627. }else{
  628. msInfo=msInfo+"'"+sp+"'";
  629. }
  630. if (i !=ja.length-1) {
  631. msInfo=msInfo+",";
  632. }
  633. }
  634. }
  635. //循环每个取样编号是否已判定
  636. for (String trs : treeSet) {
  637. String QuerySql="SELECT t.* from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS <> '0' "
  638. +" and t.SMP_NO in (SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO = '"+trs+"' "
  639. +" union all select d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d where d.QRZ_SPECIMEN_NO = '"+trs+"') ";
  640. List<HashMap> hashMap = mapper.query(QuerySql.toString());
  641. if(hashMap !=null && hashMap.size()>=1){
  642. cro.setV_errCode(-1);
  643. cro.setV_errMsg("送样取样编号【"+trs+"】下面有材质判定,不可撤销,请核实数据!");
  644. return cro;
  645. }
  646. }
  647. //调用LZMES撤销委托接口,暂时没有
  648. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Revokeghtask";//调用url
  649. String result = "";
  650. try{
  651. JSONObject tarObj=new JSONObject();
  652. Date date=new Date();
  653. SimpleDateFormat simleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  654. String ret=simleDateFormat.format(date);//系统时间
  655. //主表数据
  656. tarObj.put("revokeUser", UserName);
  657. tarObj.put("revokeReason", zhyy);
  658. tarObj.put("revokeTime", ret);
  659. tarObj.put("revokeOrderList", arr);
  660. result = httpURLPOSTCase(urlStr,tarObj.toString());//调用url
  661. if (result == null||result.equals("null") || result.equals("")) {
  662. cro.setV_errCode(-1);
  663. cro.setV_errMsg("撤回人工选样发送LIMS系统失败!返回值:"+result);
  664. return cro;
  665. }
  666. resultlist =result.substring(8, 11);
  667. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  668. cro.setV_errCode(-1);
  669. cro.setV_errMsg("撤回人工选样发送数据Lims失败!"+result);
  670. return cro;
  671. }
  672. }catch(Exception e){
  673. cro.setV_errCode(-1);
  674. cro.setV_errMsg("撤回人工选样发送数据Lims失败"+e.getMessage());
  675. return cro;
  676. }
  677. if (resultlist.equals("200")) {
  678. for (String specimenNo : treeSet) {
  679. String sql=" SELECT d.SPECIMEN_NO,d.smp_no from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO = '"+specimenNo+"' "
  680. +" union all "
  681. +" select d.SPECIMEN_NO,d.smp_no from QCM_JHY_SAMPLE_CONSIGN_D d where d.QRZ_SPECIMEN_NO = '"+specimenNo+"' ";
  682. List<HashMap> hashMap = mapper.query(sql.toString());
  683. if(hashMap!=null && hashMap.size()>=1){
  684. for (HashMap list : hashMap) {
  685. String sqlR = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  686. + " set t.SAMPL_PICK_RY = '',STATUS='0',SPECIMENNOZH = '1',SEND_ID ='',SEND_NAME='',SEND_TIME='',QRZ_SPECIMEN_NO='', "
  687. + " PRINT_LOG = '', SEND_SEQ = '', PRINT_SEQ = '' "
  688. + " where t.SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' AND t.PLINE_CODE='RZ1' ";
  689. mapper.UpdateQcmWt(sqlR.toString());
  690. String sql2 = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO ='"+list.get("SPECIMEN_NO")+"' and t.QUOTE_SPECIMEN_NO is null";
  691. mapper.delete(sql2.toString());
  692. }
  693. }
  694. }
  695. }
  696. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  697. List<HashMap> lists = mapper.query(sqlLog);
  698. for (HashMap list : lists) {
  699. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  700. qjog.setOperate_name(UserName);
  701. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  702. qjog.setOperate_type("撤销人工选样");
  703. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  704. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  705. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  706. mapper.insertQcmJudgeOperateLog(qjog);
  707. }
  708. SqlSession.commit();
  709. }catch (Exception e) {
  710. // TODO Auto-generated catch block
  711. e.printStackTrace();
  712. SqlSession.rollback();
  713. cro.setV_errCode(-1);
  714. cro.setV_errMsg("撤销人工选样委托失败,请联系管理员查看问题!");
  715. return cro;
  716. }finally {
  717. SqlSession.close();
  718. }
  719. cro.setV_errCode(1);
  720. cro.setV_errMsg("撤销人工选样发送成功");
  721. return cro;
  722. }
  723. /**
  724. * 撤销委托接口中厚板19订单
  725. * @param Entrust
  726. * @return
  727. */
  728. public CoreReturnObject CancelLIMES19(String Entrust,String UserName,String zhyy){
  729. try {
  730. JSONArray arr = new JSONArray();
  731. String[] ja=Entrust.split(",");
  732. String msInfo="";
  733. String resultlist ="";
  734. TreeSet<String> treeSet = new TreeSet<String>();
  735. if (ja!=null && ja.length>0) {
  736. for (int i = 0; i < ja.length; i++) {
  737. String sp = ja[i];
  738. treeSet.add(sp);
  739. JSONObject obj = new JSONObject();
  740. obj.put("id",sp);
  741. arr.add(obj);
  742. if ("".equals(msInfo)) {
  743. msInfo="'"+sp+"'";
  744. }else{
  745. msInfo=msInfo+"'"+sp+"'";
  746. }
  747. if (i !=ja.length-1) {
  748. msInfo=msInfo+",";
  749. }
  750. }
  751. }
  752. //循环每个取样编号是否已判定
  753. for (String trs : treeSet) {
  754. String QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS='1' and "
  755. + " t.SMP_NO=(SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"')";
  756. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  757. BigDecimal cou2 = (BigDecimal) hashMaplist2.get(0).get("CNUM");
  758. String coun2 = cou2.toString();
  759. Integer integ2 = Integer.parseInt(coun2);
  760. if(integ2 >= 1){
  761. cro.setV_errCode(-1);
  762. cro.setV_errMsg("取样编号【"+trs+"】材质已判定,不可撤销,请核实数据!");
  763. return cro;
  764. }
  765. }
  766. String updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1', "
  767. + " SEND_ID ='',SEND_NAME='',SEND_TIME='',SAMPLE_DELIVERY_TIME='' where SPECIMEN_NO in ("+msInfo+")";
  768. mapper.UpdateQcmWt(updateSql);
  769. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  770. List<HashMap> lists = mapper.query(sqlLog);
  771. for (HashMap list : lists) {
  772. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  773. qjog.setOperate_name(UserName);
  774. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  775. qjog.setOperate_type("撤销19订单检验委托");
  776. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  777. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  778. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  779. mapper.insertQcmJudgeOperateLog(qjog);
  780. }
  781. SqlSession.commit();
  782. }catch (Exception e) {
  783. e.printStackTrace();
  784. SqlSession.rollback();
  785. cro.setV_errCode(-1);
  786. cro.setV_errMsg("撤销委托失败,请联系管理员查看问题!");
  787. return cro;
  788. }finally {
  789. SqlSession.close();
  790. }
  791. cro.setV_errCode(1);
  792. cro.setV_errMsg("撤销19成功");
  793. return cro;
  794. }
  795. /**
  796. * 调用LIMS接收委托接口,实现委托下发 发送委托
  797. * @return cro
  798. * @throws IOException
  799. */
  800. @SuppressWarnings("unchecked")
  801. public CoreReturnObject SendLIMES(String Entrust,String sendId,String sendName,String sampleDeliveryTime){
  802. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  803. //String urlStr = "http://10.90.0.92:8080/open/lims/4mes/inspection";
  804. try {
  805. //createSmpleLoglist(Entrust,"下发委托",sendName);
  806. String LCplineCode="LC";//全自动激光切割加工中心系统
  807. StringBuffer sqlucomm = new StringBuffer();
  808. String[] ja=Entrust.split(",");
  809. String msInfo="";
  810. if (ja!=null && ja.length>0) {
  811. for (int i = 0; i < ja.length; i++) {
  812. String sp = ja[i];
  813. if ("".equals(msInfo)) {
  814. msInfo="'"+sp+"'";
  815. }else{
  816. msInfo=msInfo+"'"+sp+"'";
  817. }
  818. if (i !=ja.length-1) {
  819. msInfo=msInfo+",";
  820. }
  821. }
  822. }
  823. //查询检验
  824. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  825. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  826. + " d.SMP_LOCATION,d.SMP_LOCATION_CODE,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  827. + "d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,"
  828. + "m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,d.PROCESS_NOS,nvl(d.SHOULD_SAMPLE,'非预测') SHOULD_SAMPLE,d.SEND_SEQ "
  829. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  830. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  831. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS='0'");
  832. List<HashMap> lists=mapper.query(sqlucomm.toString());
  833. if (lists==null || lists.size()<1) {
  834. cro.setV_errCode(-1);
  835. cro.setV_errMsg("待发送的检验委托数据已经不存在,请核实数据!");
  836. return cro;
  837. }
  838. //获取数据进行验证
  839. TreeSet<String> sizes=new TreeSet<String>();
  840. TreeSet<String> TSHJSP = new TreeSet<String>();//夹杂初样
  841. TreeSet<String> TSHJSPF = new TreeSet<String>();//夹杂复样
  842. for (int i = 0; i < lists.size(); i++) {
  843. HashMap obj=lists.get(i);
  844. sizes.add((String)obj.get("SMP_CATG"));
  845. if(obj.get("PLINE_CODE").equals("HB1") || obj.get("PLINE_CODE").equals("ZB1") ){
  846. //热处理号限制
  847. if(obj.get("PROCESS_NOS")!=null && !"".equals(obj.get("PROCESS_NOS"))){
  848. String processNos = obj.get("PROCESS_NOS").toString();
  849. String substr=processNos.substring(2, 3);//第三位不为H
  850. String substr2=processNos.substring(4, 5);//第五位不为Q
  851. if(substr.equals("H")){
  852. cro.setV_errCode(-1);
  853. cro.setV_errMsg("当前勾选的轧批【"+obj.get("BATCH_NO")+"】热处理号第三位为H,请调整到送样的热处理号再发送谢谢!");
  854. return cro;
  855. }else if(substr2.equals("Q")){
  856. cro.setV_errCode(-1);
  857. cro.setV_errMsg("当前勾选的轧批【"+obj.get("BATCH_NO")+"】热处理号第五位为Q,请调整到送样的热处理号再发送谢谢!");
  858. return cro;
  859. }
  860. }
  861. if(obj.get("FREQ_CODE")!=null && !"".equals(obj.get("FREQ_CODE")) && obj.get("FREQ_CODE").equals("D") &&
  862. obj.get("SMP_TYPE_CODE").equals("0")){
  863. TSHJSP.add((String)obj.get("SPECIMEN_NO"));
  864. }
  865. if(obj.get("FREQ_CODE")!=null && !"".equals(obj.get("FREQ_CODE")) && obj.get("FREQ_CODE").equals("D") &&
  866. obj.get("SMP_TYPE_CODE").equals("1")){
  867. String heatNo= obj.get("HEAT_NO").toString();
  868. heatNo=heatNo.substring(0, 9);//一共10位 截取9位 最后一位字母不要
  869. TSHJSPF.add(heatNo);
  870. }
  871. if((obj.get("SHOULD_SAMPLE").equals("0") || obj.get("SHOULD_SAMPLE").equals("2")) && obj.get("SMP_TYPE_CODE").equals("0")){
  872. cro.setV_errCode(-1);
  873. cro.setV_errMsg("当前勾选的轧批【"+obj.get("BATCH_NO")+"】是预测抽样!请预测抽样");
  874. return cro;
  875. }
  876. //第三方见证限制 IC013军方认证 IC012客户认证 IC026劳盛工业(上海)
  877. /*if(obj.get("CERT_INST_CODE").equals("IC013") || obj.get("CERT_INST_CODE").equals("IC012") ||obj.get("CERT_INST_CODE").equals("IC026")){
  878. String dkstr=obj.get("DESIGN_KEY").toString();
  879. String dkbatch_no=obj.get("BATCH_NO").toString();
  880. String CERT_INST_NAME=obj.get("CERT_INST_NAME").toString();
  881. String jszq="select nvl(r.Judge_Result_Code,'N') JRCode,r.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  882. +" where t.smp_no=r.smp_no and t.smp_no = m.smp_no and r.smp_no = m.smp_no and t.IMPROVE_MEMO is null "
  883. +" and m.smp_catg = 'B' and r.Cert_Inst_Code = '5000' and t.freq_code <>'D' and t.Smp_Type_Code = '0' "
  884. +" and r.batch_no = '"+dkbatch_no+"' "
  885. +" and r.design_key = '"+dkstr+"' ";
  886. List<HashMap> hmWitn=mapper.query(jszq.toString());
  887. if(hmWitn!=null && hmWitn.size()>=1){
  888. for (int j = 0; j < hmWitn.size(); j++) {
  889. HashMap dkhm=hmWitn.get(j);
  890. if(dkhm.get("JRCODE").toString().equals("N")){
  891. cro.setV_errCode(-1);
  892. cro.setV_errMsg("勾选中的轧批【"+dkbatch_no+"】是第三方见证,检测中心未判定,不可发送【"+CERT_INST_NAME+"】机构委托!");
  893. return cro;
  894. }
  895. //检测中心初样不合格
  896. if(dkhm.get("JRCODE").toString().equals("2")){
  897. String smptype="select nvl(r.Judge_Result_Code,'N') JRCode,r.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  898. +" where t.smp_no=r.smp_no and t.smp_no = m.smp_no and r.smp_no = m.smp_no and t.IMPROVE_MEMO is null "
  899. +" and m.smp_catg = 'B' and r.Cert_Inst_Code = '5000' and t.freq_code <>'D' and t.Smp_Type_Code = '1' "
  900. +" and r.batch_no = '"+dkbatch_no+"' "
  901. +" and r.design_key = '"+dkstr+"' and r.Judge_Result_Code is null ";
  902. List<HashMap> hmtype=mapper.query(smptype.toString());
  903. if(hmtype!=null && hmtype.size()>=1){
  904. cro.setV_errCode(-1);
  905. cro.setV_errMsg("勾选中的轧批【"+dkbatch_no+"】是第三方见证,检测中心不合格复样未判定,不可发送【"+CERT_INST_NAME+"】机构委托!");
  906. return cro;
  907. }
  908. }
  909. }
  910. }
  911. }*/
  912. }
  913. //线棒自动限制
  914. if(obj.get("PLINE_CODE").equals("GX1") || obj.get("PLINE_CODE").equals("GX2") || obj.get("PLINE_CODE").equals("BC2") ){
  915. if(obj.get("SMP_TYPE_CODE").equals("1")){
  916. String ggb="select * from qcm_jhy_sample_consign_d d,qcm_jhy_sample_r_ord r "
  917. +" where d.smp_no = r.smp_no and d.smp_type_code = '0' "
  918. +" and r.judge_status = '0' and d.batch_no ='"+obj.get("BATCH_NO")+"' ";
  919. List<HashMap> ggbhm=mapper.query(ggb.toString());
  920. if(ggbhm!=null && ggbhm.size()>=1){
  921. cro.setV_errCode(-1);
  922. cro.setV_errMsg("当前勾选的轧批【"+obj.get("BATCH_NO")+"】还有初样没有判完,不可发送复样!");
  923. return cro;
  924. }
  925. }
  926. }
  927. }
  928. if (sizes.size()!=1) {
  929. cro.setV_errCode(-1);
  930. cro.setV_errMsg("待发送的检验委托数据只能同时发送一种类型的待检数据,请核实数据!");
  931. return cro;
  932. }
  933. if (TSHJSP.size()>=2) {
  934. cro.setV_errCode(-1);
  935. cro.setV_errMsg("夹杂是按炉取样的,夹杂委托请单独一条委托下发!");
  936. return cro;
  937. }
  938. if (TSHJSPF.size()>=2) {
  939. cro.setV_errCode(-1);
  940. cro.setV_errMsg("夹杂是按炉取样的,未防止数据错误,夹杂复样请按同一炉的复样下发委托!");
  941. return cro;
  942. }
  943. for (HashMap hmapRZ : lists) {
  944. //热轧限制 当前获取的取样编号对应的子板是否有组批区间 防止020脱离组匹区间 而操作人员又没有从新生成委托 就直接点击发送委托 又把010的给发送到LIMS
  945. if(hmapRZ.get("PLINE_CODE").equals("RZ1") && hmapRZ.get("SMP_TYPE_CODE").equals("0")){
  946. String rzSql = " select t3.OLD_SAMPL_NO,t4.ROLL_MANA_NO,t4.ROLL_SLAB_SEQ,t4.MIXROLL,t1.SPECIMEN_NO,t1.INSPECTION_LOT "
  947. +" from QCM_JHY_SAMPLE_CONSIGN_D t1, "
  948. +" QCM_JHY_SAMPLE_CONSIGN_M t2, "
  949. +" QCM_JHY_SAMPLE_R_ORD ord, "
  950. +" tbh02_coil_comm t3, "
  951. +" tbf02_spec_mill t4 "
  952. +" where t1.SMP_NO = t2.SMP_NO "
  953. +" and t1.smp_no = ord.smp_no "
  954. +" and t1.inspection_lot = t3.SAMPL_NO "
  955. +" and t3.COIL_NO = t4.COIL_NO "
  956. +" and t1.validflag = '1' "
  957. +" and t1.pline_code = 'RZ1' "
  958. +" and t3.OLD_SAMPL_NO = '"+hmapRZ.get("MATERIAL_NO").toString()+"' "
  959. +" and t4.MIXROLL is not null and ord.design_key not like '39%' and ord.design_key not like '49%' and ord.design_key not like '59%' "
  960. +" order by t4.ROLL_SLAB_SEQ asc ";
  961. List<HashMap> RZlists=mapper.query(rzSql.toString());
  962. if (RZlists!=null && RZlists.size()>=1) {
  963. cro.setV_errCode(-1);
  964. cro.setV_errMsg("当前委托是预测委托!请预测抽样");
  965. return cro;
  966. }
  967. }
  968. //热轧力学复样限制
  969. if(hmapRZ.get("PLINE_CODE").equals("RZ1") && hmapRZ.get("SMP_TYPE_CODE").equals("1") && hmapRZ.get("FREQ_CODE").equals("A")){
  970. String clearinlot=" select r.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m,qcm_jhy_sample_r_ord r "
  971. +" where t.smp_no = m.smp_no and t.smp_no = r.smp_no and m.smp_no = r.smp_no "
  972. +" and r.batch_no = '"+hmapRZ.get("BATCH_NO")+"' "
  973. +" and r.design_key = '"+hmapRZ.get("DESIGN_KEY")+"' "
  974. +" and t.smp_type_code = '0' "
  975. +" and r.inspection_lot = '"+hmapRZ.get("INSPECTION_LOT")+"' "
  976. +" and r.Judge_Result_Code = '2' ";
  977. List<HashMap> Dlists=mapper.query(clearinlot.toString());
  978. if(Dlists!=null && Dlists.size() == 1){
  979. String sqllot=" update qcm_jhy_sample_r_ord r set r.inspection_lot = '1' where r.smp_no = '"+Dlists.get(0).get("SMP_NO")+"'";
  980. mapper.updateJudgeStatus(sqllot.toString());
  981. }
  982. }
  983. //线棒力学复样限制
  984. if(hmapRZ.get("PLINE_CODE").equals("GX1") && hmapRZ.get("PLINE_CODE").equals("GX2") && hmapRZ.get("PLINE_CODE").equals("BC2") &&
  985. hmapRZ.get("SMP_TYPE_CODE").equals("1") && hmapRZ.get("FREQ_CODE").equals("A")){
  986. String sqlx=" select r.* from qcm_jhy_sample_consign_d t, qcm_jhy_sample_r_ord r where t.smp_no = r.smp_no "
  987. +" and r.batch_no = '"+hmapRZ.get("BATCH_NO")+"' and r.design_key = '"+hmapRZ.get("DESIGN_KEY")+"' "
  988. +" and t.smp_type_code = '0' and r.inspection_lot = '"+hmapRZ.get("INSPECTION_LOT")+"' and r.inspection_lot is not null ";
  989. List<HashMap> hmx=mapper.query(sqlx.toString());
  990. if(hmx!=null && hmx.size() >= 1){
  991. for (HashMap hmap : hmx) {
  992. String sql=" select * from qcm_jhy_sample_consign_d t where t.smp_no = '"+hmap.get("SMP_NO")+"' and t.smp_type_code = '1' and rownum=1 ";
  993. List<HashMap> hmSmpNo=mapper.query(sql.toString());
  994. if(hmSmpNo == null || hmSmpNo.size()<=0){
  995. String sqllot=" update qcm_jhy_sample_r_ord r set r.inspection_lot = '1' where r.smp_no = '"+hmSmpNo.get(0).get("SMP_NO")+"' ";
  996. mapper.updateJudgeStatus(sqllot.toString());
  997. }
  998. }
  999. }
  1000. }
  1001. }
  1002. ///中厚板限制
  1003. for (HashMap hmap : lists) {
  1004. if(hmap.get("PLINE_CODE").equals("HB1") || hmap.get("PLINE_CODE").equals("ZB1") ){
  1005. //夹杂初样 判断发送的是不是 复样 按炉 夹杂
  1006. if(hmap.get("FREQ_CODE")!=null && !"".equals(hmap.get("FREQ_CODE")) && hmap.get("FREQ_CODE").equals("D") &&
  1007. hmap.get("SMP_TYPE_CODE").equals("0")){
  1008. String heatNo= hmap.get("HEAT_NO").toString();
  1009. heatNo=heatNo.substring(0, 9);//一共10位 截取9位 最后一位字母不要
  1010. //查询出这个炉号所有的轧批 排除当前发送轧批
  1011. String sqlD="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t "
  1012. +" where t.Heat_No LIKE '"+heatNo+"%' "
  1013. +" and t.freq_code = 'D' "
  1014. +" and t.status = '0' "
  1015. +" and t.smp_type_code = '0' and t.pline_code in ('ZB1','HB1') "
  1016. +" and t.SPECIMEN_NO <> '"+hmap.get("SPECIMEN_NO")+"' "
  1017. +" and t.specimen_no not in ( "
  1018. +" select d.specimen_no from qcm_jhy_sample_consign_d d,qcm_jhy_sample_consign_d_item i "
  1019. +" where d.specimen_no=i.specimen_no "
  1020. +" and d.Heat_No LIKE '"+heatNo+"%' "
  1021. +" and d.freq_code = 'D' "
  1022. +" and d.status = '0' "
  1023. +" and d.smp_type_code = '0' "
  1024. +" and t.pline_code in ('ZB1','HB1') "
  1025. +" and i.Phy_Code_s='J10' ) ";
  1026. List<HashMap> Dlists=mapper.query(sqlD.toString());
  1027. if(Dlists!=null && Dlists.size()>=1){
  1028. //循环所有的轧批 引用
  1029. for (int i = 0; i < Dlists.size(); i++) {
  1030. String sql ="";
  1031. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D t set STATUS = '1',QUOTE_CONSIGN_NO = '"+hmap.get("SPECIMEN_NO")+"' "
  1032. +" ,SEND_ID='引用发送',SEND_NAME='引用发送',SEND_TIME=sysdate "
  1033. +" where HEAT_NO like '"+heatNo+"%' and freq_code = 'D' and smp_type_code = '0' "
  1034. +" and SPECIMEN_NO = '"+Dlists.get(i).get("SPECIMEN_NO")+"' ";
  1035. mapper.updateJudgeStatus(sql.toString());
  1036. String itemSql2= "select * from qcm_jhy_sample_consign_d_item i where i.specimen_no = '"+Dlists.get(i).get("SPECIMEN_NO")+"' order by i.specimen_no asc, i.seq asc";
  1037. List<HashMap> itemLists2=mapper.query(itemSql2.toString());
  1038. if(itemLists2!=null && itemLists2.size()>=1){
  1039. for (int j = 0; j < itemLists2.size(); j++) {
  1040. //查询出发送的轧批 夹杂明细
  1041. String itemSql= "select * from qcm_jhy_sample_consign_d_item i "
  1042. + " where i.specimen_no = '"+hmap.get("SPECIMEN_NO")+"' and i.PHY_CODE_S='"+itemLists2.get(j).get("PHY_CODE_S")+"' "
  1043. + " and rownum = 1 ";
  1044. List<HashMap> itemLists=mapper.query(itemSql.toString());
  1045. if(itemLists!=null && itemLists.size()>=1){
  1046. sql="";
  1047. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D_ITEM set QUOTE_SPECIMEN_NO = '"+hmap.get("SPECIMEN_NO")+"',QUOTE_SEQ='"+itemLists.get(0).get("SEQ")+"' "
  1048. +" where SPECIMEN_NO = '"+itemLists2.get(j).get("SPECIMEN_NO")+"' and PHY_CODE_S='"+itemLists2.get(j).get("PHY_CODE_S")+"' ";
  1049. mapper.updateJudgeStatus(sql.toString());
  1050. }
  1051. }
  1052. }
  1053. }
  1054. }
  1055. }
  1056. //中厚板夹杂力学复样限制
  1057. if(hmap.get("SMP_TYPE_CODE").equals("1") && !hmap.get("FREQ_CODE").equals("C") && !hmap.get("FREQ_CODE").equals("H") && !hmap.get("FREQ_CODE").equals("I")){
  1058. String clearinlot=" select r.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m,qcm_jhy_sample_r_ord r "
  1059. +" where t.smp_no = m.smp_no and t.smp_no = r.smp_no and m.smp_no = r.smp_no "
  1060. +" and r.batch_no = '"+hmap.get("BATCH_NO")+"' "
  1061. +" and r.pline_code = '"+hmap.get("PLINE_CODE")+"' "
  1062. +" and r.design_key = '"+hmap.get("DESIGN_KEY")+"' "
  1063. +" and r.steel_code = '"+hmap.get("STEEL_CODE")+"' "
  1064. +" and r.thick = '"+hmap.get("THICK")+"' "
  1065. +" and r.cert_inst_code = '"+hmap.get("CERT_INST_CODE")+"' "
  1066. +" and t.freq_code = '"+hmap.get("FREQ_CODE")+"' "
  1067. +" and t.smp_location_code = '"+hmap.get("SMP_LOCATION_CODE")+"' "
  1068. +" and t.smp_type_code = '0' "
  1069. +" and r.inspection_lot is not null and r.Judge_Result_Code = '2' and t.Improve_Memo is null "
  1070. +" and t.PROCESS_NOS = '"+hmap.get("PROCESS_NOS")+"' ";
  1071. List<HashMap> Dlists=mapper.query(clearinlot.toString());
  1072. if(Dlists!=null && Dlists.size() == 1){
  1073. String sqllot=" update qcm_jhy_sample_r_ord r set r.inspection_lot = '1' where r.smp_no = '"+Dlists.get(0).get("SMP_NO")+"'";
  1074. mapper.updateJudgeStatus(sqllot.toString());
  1075. }
  1076. }
  1077. }
  1078. }
  1079. ///夹杂复样
  1080. TreeSet<String> treeSet = new TreeSet<String>();//轧批号
  1081. TreeSet<String> treeSet1 = new TreeSet<String>();//炉号
  1082. TreeSet<String> treeSet2 = new TreeSet<String>();//取样编号
  1083. String plineCodeHj="";
  1084. for (HashMap hmap : lists) {//判断发送的是不是 复样 按炉 夹杂
  1085. if(hmap.get("FREQ_CODE")!=null && !"".equals(hmap.get("FREQ_CODE")) &&hmap.get("FREQ_CODE").equals("D") &&
  1086. (hmap.get("SMP_TYPE_CODE").equals("1")) &&
  1087. !hmap.get("PLINE_CODE").equals("RZ1")&& !hmap.get("PLINE_CODE").equals("LT1")){
  1088. //判断夹杂复样是不是夹杂整体,是排除
  1089. String strHj="select * from qcm_jhy_sample_consign_d_item t where t.specimen_no = '"+hmap.get("SPECIMEN_NO")+"' and t.phy_code_s = 'J10' ";
  1090. List<HashMap> hmHJ=mapper.query(strHj.toString());
  1091. if(hmHJ!=null && hmHJ.size()>=1){
  1092. continue;
  1093. }
  1094. treeSet.add((String)hmap.get("BATCH_NO"));
  1095. treeSet1.add((String)hmap.get("HEAT_NO"));
  1096. treeSet2.add((String)hmap.get("SPECIMEN_NO"));
  1097. plineCodeHj=hmap.get("PLINE_CODE").toString();
  1098. }
  1099. }
  1100. //是 复样 按炉夹杂 轧批号多个 但是炉号必为1
  1101. if(treeSet.size()>=1 && treeSet1.size()== 1){
  1102. for (String heatNo : treeSet1) {
  1103. String heatNo2 = heatNo.substring(0, 9);//一共10位 截取9位 最后一位字母不要
  1104. String strPlineCode = "";
  1105. if(!plineCodeHj.equals("ZB1") && !plineCodeHj.equals("HB1") ){
  1106. strPlineCode = " and t.pline_code = '"+plineCodeHj+"' ";
  1107. }else{
  1108. strPlineCode = " and t.pline_code in ('ZB1','HB1') ";
  1109. }
  1110. //查询初样取样编号
  1111. String dsql ="";
  1112. dsql = "select t.specimen_no,t.QUOTE_CONSIGN_NO from (select t.SPECIMEN_NO,t.QUOTE_CONSIGN_NO from QCM_JHY_SAMPLE_CONSIGN_D t "
  1113. + "where HEAT_NO like '"+heatNo2+"%' and freq_code = 'D' and QUOTE_CONSIGN_NO is not null "
  1114. + " and inspection_lot not in (select t.inspection_lot from QCM_JHY_SAMPLE_CONSIGN_D t where t.HEAT_NO like '"+heatNo2+"%' "
  1115. + " and t.freq_code = 'D' and t.QUOTE_CONSIGN_NO is null) "
  1116. +strPlineCode
  1117. +") t where 1=1 "
  1118. +" and t.QUOTE_CONSIGN_NO not in(select t.SPECIMEN_NO from QCM_JHY_SAMPLE_CONSIGN_D t where t.HEAT_NO like '"+heatNo2+"%' "
  1119. +" and t.freq_code = 'D' and t.QUOTE_CONSIGN_NO is null and t.SMP_TYPE_CODE='1') ";
  1120. List<HashMap> SampleD2=mapper.query(dsql.toString());
  1121. if(SampleD2 != null && SampleD2.size() >= 1){
  1122. for (HashMap hashMap : SampleD2) {
  1123. String sql ="";
  1124. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D_ITEM set QUOTE_SPECIMEN_NO = '"+treeSet2.first()+"' ";
  1125. sql +=" where SPECIMEN_NO = '"+hashMap.get("SPECIMEN_NO")+"' "
  1126. + " and FY_QUOTE_SPECIMEN_NO is null ";
  1127. mapper.updateJudgeStatus(sql.toString());
  1128. sql ="";
  1129. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D t set QUOTE_CONSIGN_NO = '"+treeSet2.first()+"',QUOTE_BATCH_NO_ONE = '"+treeSet.first()+"' ";
  1130. sql +=" where HEAT_NO like '"+heatNo2+"%' and freq_code = 'D' and QUOTE_CONSIGN_NO is not null "
  1131. + " and SPECIMEN_NO = '"+hashMap.get("SPECIMEN_NO")+"' "
  1132. + strPlineCode;
  1133. mapper.updateJudgeStatus(sql.toString());
  1134. }
  1135. }
  1136. //查询初样
  1137. dsql="";
  1138. dsql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t where t.HEAT_NO like '"+heatNo2+"%' and t.freq_code = 'D' "
  1139. + " and t.SMP_TYPE_CODE='0' and t.QUOTE_CONSIGN_NO is null "
  1140. +strPlineCode;
  1141. List<HashMap> hmzb=mapper.query(dsql.toString());
  1142. if(hmzb!=null && hmzb.size()>=1){
  1143. //查询复样
  1144. String dsql2 ="select * from QCM_JHY_SAMPLE_CONSIGN_D t,Qcm_Jhy_Sample_r_Ord r"
  1145. + " where t.SMP_NO=r.SMP_NO and t.HEAT_NO like '"+heatNo2+"%' and t.freq_code = 'D' "
  1146. + " and t.SMP_TYPE_CODE='1' and t.QUOTE_CONSIGN_NO is null "
  1147. +strPlineCode;
  1148. List<HashMap> hmzb2=mapper.query(dsql2.toString());
  1149. if(hmzb2!=null && hmzb2.size()>=1){
  1150. for (HashMap hmap : hmzb2) {
  1151. //查询复样的初样
  1152. String dsql3 ="select * from QCM_JHY_SAMPLE_CONSIGN_D t,Qcm_Jhy_Sample_r_Ord r"
  1153. + " where t.SMP_NO=r.SMP_NO and t.HEAT_NO like '"+heatNo2+"%' and t.freq_code = 'D' "
  1154. + " and t.SMP_TYPE_CODE='0' and t.QUOTE_CONSIGN_NO is not null "
  1155. + " and t.BATCH_NO='"+hmap.get("BATCH_NO")+"' and r.DESIGN_KEY= '"+hmap.get("DESIGN_KEY")+"' "
  1156. + " and r.STEEL_CODE='"+hmap.get("STEEL_CODE")+"' and r.THICK = '"+hmap.get("THICK")+"' "
  1157. +strPlineCode;
  1158. List<HashMap> hmzb3=mapper.query(dsql3.toString());
  1159. if(hmzb3!=null && hmzb3.size()>=1 && !hmzb.get(0).get("SPECIMEN_NO").equals(hmzb3.get(0).get("QUOTE_CONSIGN_NO"))){
  1160. String sql ="";
  1161. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D_ITEM set QUOTE_SPECIMEN_NO = '"+hmzb.get(0).get("SPECIMEN_NO")+"' ";
  1162. sql +=" where SPECIMEN_NO = '"+hmzb3.get(0).get("SPECIMEN_NO")+"' "
  1163. + " and FY_QUOTE_SPECIMEN_NO is null ";
  1164. mapper.updateJudgeStatus(sql.toString());
  1165. sql ="";
  1166. sql +=" update QCM_JHY_SAMPLE_CONSIGN_D t set QUOTE_CONSIGN_NO = '"+hmzb.get(0).get("SPECIMEN_NO")+"' ";
  1167. sql +=" where SPECIMEN_NO = '"+hmzb3.get(0).get("SPECIMEN_NO")+"' "
  1168. + strPlineCode;
  1169. mapper.updateJudgeStatus(sql.toString());
  1170. }
  1171. }
  1172. }
  1173. }
  1174. }
  1175. }
  1176. JSONArray tarDate=new JSONArray();
  1177. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  1178. Date date=new Date();
  1179. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1180. String dateString=simpleDateFormat.format(date);
  1181. //生成委托编号
  1182. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  1183. sqlucomm.setLength(0);
  1184. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  1185. HashMap map=mapper.queryOne(sqlucomm.toString());
  1186. BigDecimal count = BigDecimal.ZERO;
  1187. if( null != map.get("BIGSEQ")){
  1188. count=(BigDecimal)map.get("BIGSEQ");
  1189. }
  1190. if (count.compareTo(BigDecimal.ZERO)==1) {
  1191. count=count.add(BigDecimal.ONE);
  1192. }else{
  1193. count=BigDecimal.ONE;
  1194. }
  1195. consignNo=consignNo+String.format("%03d", count.intValue());
  1196. System.out.println("======="+count.intValue());
  1197. int seq=1;
  1198. String plineCodeLims = "";//中厚板送样产线,按送样时间确定
  1199. for (int i = 0; i < lists.size(); i++) {
  1200. HashMap obj=lists.get(i);
  1201. //中厚板送样产线
  1202. if(obj.get("PLINE_CODE").toString().equals("ZB1") || obj.get("PLINE_CODE").toString().equals("HB1")){
  1203. if(sampleDeliveryTime.contains("06:30:00") || sampleDeliveryTime.contains("10:30:00") ||
  1204. sampleDeliveryTime.contains("17:30:00") || sampleDeliveryTime.contains("20:30:00")){
  1205. plineCodeLims = "HB1";
  1206. }else if(sampleDeliveryTime.contains("03:00:00") || sampleDeliveryTime.contains("11:00:00") ||
  1207. sampleDeliveryTime.contains("15:00:00") || sampleDeliveryTime.contains("18:00:00") ||
  1208. sampleDeliveryTime.contains("21:00:00") || sampleDeliveryTime.contains("06:00:00") ){
  1209. plineCodeLims = "ZB1";
  1210. }
  1211. }
  1212. obj.put("PLINE_CODE_LIMS", plineCodeLims);
  1213. obj.put("SEND_ID", sendId);
  1214. obj.put("SEND_NAME", sendName);
  1215. obj.put("CONSIGN_NO", consignNo);
  1216. obj.put("CONSIGN_NO_SEQ", seq++);
  1217. obj.put("SEND_TIME", dateString);
  1218. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  1219. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  1220. //目标json
  1221. JSONObject tarObj=new JSONObject();
  1222. //主表数据
  1223. createTarObj(tarObj,smpleD);
  1224. //发送序号 createSendSeq
  1225. if(obj.get("PLINE_CODE").equals("RZ1") || obj.get("PLINE_CODE").equals("LT1")
  1226. || obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  1227. String sendSeq="";//发送序号
  1228. if(obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  1229. sendSeq=createSendSeq(tarObj.getString("plineCode").toString());
  1230. }else{
  1231. sendSeq=createSendSeq(obj.get("PLINE_CODE").toString());
  1232. }
  1233. //String sendQ="select to_number(substr('"+sendSeq+"', 8)) PRINT_SEQ from dual t ";
  1234. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  1235. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  1236. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();//打印序号
  1237. if(tarObj.getString("plineCode").equals("ZB1")){
  1238. tarObj.put("printSeq", 'Z'+PRINT_SEQ);
  1239. PRINT_SEQ='Z'+PRINT_SEQ;
  1240. }else if(tarObj.getString("plineCode").equals("HB1")){
  1241. tarObj.put("printSeq", 'H'+PRINT_SEQ);
  1242. PRINT_SEQ='H'+PRINT_SEQ;
  1243. }else if(obj.get("PLINE_CODE").equals("RZ1")){
  1244. tarObj.put("printSeq", 'R'+PRINT_SEQ);
  1245. PRINT_SEQ='R'+PRINT_SEQ;
  1246. }else if(obj.get("PLINE_CODE").equals("LT1")){
  1247. tarObj.put("printSeq", 'L'+PRINT_SEQ);
  1248. PRINT_SEQ='L'+PRINT_SEQ;
  1249. }else{
  1250. tarObj.put("printSeq", PRINT_SEQ);//打印序号
  1251. }
  1252. //船检编号
  1253. String printseqj = "";
  1254. if(obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  1255. String plineCodeJ=tarObj.getString("plineCode").toString();
  1256. String certInstCodeJ = obj.get("CERT_INST_CODE").toString();
  1257. if(certInstCodeJ.equals("IC005") || certInstCodeJ.equals("IC009") || certInstCodeJ.equals("IC006") || certInstCodeJ.equals("IC007") ||
  1258. certInstCodeJ.equals("IC002") || certInstCodeJ.equals("IC001") || certInstCodeJ.equals("IC008")){
  1259. printseqj = createPintSeqJ(plineCodeJ,certInstCodeJ);
  1260. String printseqj2=printseqj.substring(5, printseqj.length());
  1261. tarObj.put("PRINTSEQJ", printseqj2);//船检编号
  1262. }
  1263. }else if(obj.get("PLINE_CODE").equals("RZ1")){
  1264. //判定厚度
  1265. String strRz=" select to_char(t.dcs_thk,'fm990.099') DCS_THK from tbh02_coil_comm t "
  1266. + " where T.OLD_SAMPL_NO ='"+tarObj.getString("materialNo")+"' and t.dcs_thk is not null and rownum=1";
  1267. List<HashMap> hmRz=mapper.query(strRz.toString());
  1268. String dcsThk = "";
  1269. if(hmRz!=null && hmRz.size()>=1){
  1270. dcsThk=hmRz.get(0).get("DCS_THK").toString();
  1271. }
  1272. tarObj.put("dcsThk", dcsThk);//判定厚度人工输入
  1273. }
  1274. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"',PRINT_SEQJ='"+printseqj+"' "
  1275. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and SPECIMEN_NO = '"+obj.get("SPECIMEN_NO")+"' ";
  1276. mapper.updateJudgeStatus(qcmSendSeq.toString());
  1277. tarObj.put("sendSeq", sendSeq);//发送序号
  1278. }
  1279. tarObj.put("CREATE_ID", sendId);
  1280. tarObj.put("CREATE_NAME", sendName);
  1281. tarObj.put("sampleDeliveryTime", sampleDeliveryTime);//送样时间点
  1282. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  1283. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  1284. if(obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  1285. tarObj.put("heatTreatment", obj.get("PROCESS_NOS"));
  1286. //传给lims的成分标识
  1287. String sql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t,QCM_JHY_SAMPLE_CONSIGN_M m "
  1288. +" where t.smp_no = m.smp_no and m.SMP_CATG = 'A' and t.batch_no = '"+smpleD.getString("BATCH_NO")+"' ";
  1289. List<HashMap> componentLog=mapper.query(sql.toString());
  1290. if(componentLog!=null && componentLog.size()>=1){
  1291. tarObj.put("componentLog", '1');//1代表有成分
  1292. }else{
  1293. tarObj.put("componentLog", '0');//0代表无成分
  1294. }
  1295. }
  1296. if ("5000".equals(obj.get("CERT_INST_CODE")) || "IC012".equals(obj.get("CERT_INST_CODE")) ) {
  1297. tarObj.put("type", "0");
  1298. }else{
  1299. tarObj.put("type", "1");
  1300. }
  1301. if ("B".equals(obj.get("SMP_CATG"))) {
  1302. //材质
  1303. sqlucomm.setLength(0);
  1304. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.SMP_NO,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  1305. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  1306. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.QUOTE_SEQ,T.MEMO,T.ITEM_CODE_L,"
  1307. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.CREATE_TIME,T.CREATE_ID,T.CREATE_NAME,T.SPECL_FL, "
  1308. + "T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,t.STDMEMO from QCM_JHY_SAMPLE_CONSIGN_D_ITEM T"
  1309. + " WHERE T.SPECIMEN_NO='"+obj.get("SPECIMEN_NO")+"' and (T.QUOTE_SPECIMEN_NO is null or T.QUOTE_SPECIMEN_NO='') and t.Fy_Quote_Specimen_No is null and t.QUOTE_MEMO is null ");
  1310. List<HashMap> items=mapper.query(sqlucomm.toString());
  1311. if (items!=null && items.size()>0) {
  1312. JSONArray arrayItem=new JSONArray();
  1313. for(int j = 0 ;j < items.size() ; j++){
  1314. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  1315. JSONObject tarItem=new JSONObject();
  1316. //子表数据
  1317. createItem(tarItem,oldItem);
  1318. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  1319. tarItem.put("tsFlag", "1");//探伤
  1320. }else{
  1321. tarItem.put("tsFlag", "0");//非探伤
  1322. }
  1323. arrayItem.add(tarItem);
  1324. }
  1325. tarObj.put("items", arrayItem);
  1326. }
  1327. }else{
  1328. //成分
  1329. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  1330. tarObj.putAll(chemItem);
  1331. }
  1332. tarDate.add(tarObj);
  1333. //全自动激光切割加工中心系统
  1334. HashMap<String,String> hm = new HashMap<String,String>();
  1335. hm.put("SPECIMEN_NO", obj.get("SPECIMEN_NO").toString());
  1336. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  1337. hm.put("PLINE_CODE", LCplineCode);
  1338. if(LCplineCode.equals("HB1")){
  1339. String lcThick = obj.get("THICK").toString();
  1340. double lcThick2 = Double.parseDouble(lcThick);
  1341. if(lcThick2<=25){
  1342. LCtarDate.add(tarObj);
  1343. String strjg=qcmJg(hm);
  1344. mapper.insert(strjg);
  1345. }
  1346. }else if(LCplineCode.equals("ZB1") || LCplineCode.equals("RZ1")){
  1347. LCtarDate.add(tarObj);
  1348. String strjg=qcmJg(hm);
  1349. mapper.insert(strjg);
  1350. }
  1351. }
  1352. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  1353. String tar=tarDate.toString();
  1354. String result = "";//调用url
  1355. try{
  1356. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  1357. if (result == null ||result.equals("null") || result.equals("")) {
  1358. cro.setV_errCode(-1);
  1359. cro.setV_errMsg("发送LIMS系统失败!返回值:"+result);
  1360. SqlSession.rollback();
  1361. return cro;
  1362. }
  1363. }catch(Exception e){
  1364. cro.setV_errCode(-1);
  1365. cro.setV_errMsg(e.getMessage());
  1366. return cro;
  1367. }
  1368. String resultlist =result.substring(8, 11);
  1369. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  1370. cro.setV_errCode(-1);
  1371. cro.setV_errMsg("发送LIMS系统失败!"+result);
  1372. SqlSession.rollback();
  1373. return cro;
  1374. }
  1375. if(resultlist.equals("200")){
  1376. for (HashMap list : lists) {
  1377. mapper.updateConsignNo((String)list.get("CONSIGN_NO"), (Integer)list.get("CONSIGN_NO_SEQ"),
  1378. sendId, sendName,(String)list.get("SPECIMEN_NO"));
  1379. if(list.get("PLINE_CODE").equals("HB1") || list.get("PLINE_CODE").equals("ZB1")){
  1380. String sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  1381. + " set t.SAMPLE_DELIVERY_TIME = '"+sampleDeliveryTime+"',t.PLINE_CODE_LIMS='"+plineCodeLims+"' "
  1382. + " where t.SPECIMEN_NO = '"+(String)list.get("SPECIMEN_NO")+"' ";
  1383. mapper.UpdateQcmWt(sql.toString());
  1384. //判断是否是中厚板预测值 Q355B Q235B
  1385. sql ="";
  1386. sql =" select T.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r where t.smp_no = r.smp_no and r.steel_code in ('Q355B','Q235B') "
  1387. +" and t.Should_Sample ='1' and t.Function_Fuhe is not null and t.pline_code IN ('HB1','ZB1') and t.smp_type_code = '0' "
  1388. +" and t.specimen_no = '"+list.get("SPECIMEN_NO")+"' and r.judge_status='0' ";
  1389. List<HashMap> hm=mapper.query(sql.toString());
  1390. if(hm!=null && hm.size()>=1){
  1391. //删除 实绩表中的预测值数据
  1392. sql="";
  1393. sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' and SEQ<=49 ";
  1394. mapper.delete(sql.toString());
  1395. }
  1396. }
  1397. if(list.get("PLINE_CODE").equals("RZ1")){
  1398. String rzMixroll = "select t.* from QCM_JHY_SAMPLE_CONSIGN_D t, qcm_jhy_sample_r_ord r "
  1399. + " where t.smp_no = r.smp_no and r.design_key not like '39%' and r.design_key not like '49%' and r.design_key not like '59%' "
  1400. + " and t.inspection_lot = '"+list.get("INSPECTION_LOT")+"' and t.Rz_Mixroll is not null ";
  1401. List<HashMap> hmRzMixroll=mapper.query(rzMixroll.toString());
  1402. if(hmRzMixroll!=null && hmRzMixroll.size()>=1 && list.get("SMP_TYPE_CODE").equals("1")){
  1403. String sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  1404. + " set t.SAMPL_PICK_RY = 'Y(R)' "
  1405. + " where t.SPECIMEN_NO = '"+(String)list.get("SPECIMEN_NO")+"' ";
  1406. mapper.UpdateQcmWt(sql.toString());
  1407. }else{
  1408. String sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  1409. + " set t.SAMPL_PICK_RY = 'Y' "
  1410. + " where t.SPECIMEN_NO = '"+(String)list.get("SPECIMEN_NO")+"' ";
  1411. mapper.UpdateQcmWt(sql.toString());
  1412. }
  1413. }
  1414. }
  1415. cro.setV_errCode(1);
  1416. cro.setV_errMsg("发送成功");
  1417. }
  1418. for (HashMap list : lists) {
  1419. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  1420. qjog.setOperate_name(sendName);
  1421. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  1422. qjog.setOperate_type("发送检验委托");
  1423. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  1424. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  1425. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  1426. mapper.insertQcmJudgeOperateLog(qjog);
  1427. }
  1428. SqlSession.commit();
  1429. //全自动激光切割加工中心系统
  1430. /*if(LCplineCode.equals("HB1") || LCplineCode.equals("ZB1") || LCplineCode.equals("RZ1")){
  1431. if(LCtarDate.size()>=1){
  1432. //开关状态
  1433. String jgkg=QcmJhyJgKg(LCplineCode);
  1434. if("1".equals(jgkg)){
  1435. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  1436. String LCtar=LCtarDate.toString();
  1437. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  1438. }
  1439. }
  1440. }*/
  1441. } catch (Exception e) {
  1442. // TODO Auto-generated catch block
  1443. e.printStackTrace();
  1444. SqlSession.rollback();
  1445. cro.setV_errCode(-1);
  1446. cro.setV_errMsg("发送委托失败!"+e.getMessage());
  1447. return cro;
  1448. }finally {
  1449. SqlSession.close();
  1450. }
  1451. return cro;
  1452. }
  1453. /**
  1454. * 热轧 人工抽样 调用LIMS接收委托接口,实现委托下发
  1455. * @return cro
  1456. * @throws IOException
  1457. */
  1458. @SuppressWarnings("unchecked")
  1459. public CoreReturnObject SendLimesRZ(String Entrust,String sendId,String sendName,String GroupBatch,String PlineCode){
  1460. Connection conn = this.getDao("testDao").getConnection();
  1461. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  1462. try {
  1463. String LCplineCode="LC";//全自动激光切割加工中心系统
  1464. if (!GroupBatch.equals("1") || !PlineCode.equals("热轧")) {
  1465. cro.setV_errCode(-1);
  1466. cro.setV_errMsg("只能热轧产线使用人工抽样按钮!");
  1467. return cro;
  1468. }
  1469. TreeSet<String> treeSet = new TreeSet<String>();
  1470. StringBuffer sqlucomm = new StringBuffer();
  1471. String[] ja=Entrust.split(",");
  1472. String msInfo="";
  1473. if (ja!=null && ja.length>0) {
  1474. for (int i = 0; i < ja.length; i++) {
  1475. String sp = ja[i];
  1476. if ("".equals(msInfo)) {
  1477. msInfo="'"+sp+"'";
  1478. treeSet.add(sp);
  1479. }else{
  1480. msInfo=msInfo+"'"+sp+"'";
  1481. treeSet.add(sp);
  1482. }
  1483. if (i !=ja.length-1) {
  1484. msInfo=msInfo+",";
  1485. treeSet.add(sp);
  1486. }
  1487. }
  1488. }
  1489. //只要选择一个轧批就可以
  1490. if(treeSet.size() > 1){
  1491. cro.setV_errCode(-1);
  1492. cro.setV_errMsg("只能选择一个轧批号人工抽样委托!");
  1493. return cro;
  1494. }
  1495. //查询检验
  1496. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  1497. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  1498. + " d.SMP_LOCATION,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  1499. + "d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,"
  1500. + "m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,d.SEND_SEQ "
  1501. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  1502. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  1503. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS='0'");
  1504. List<HashMap> lists=mapper.query(sqlucomm.toString());
  1505. if (lists==null || lists.size()<1) {
  1506. cro.setV_errCode(-1);
  1507. cro.setV_errMsg("待发送的检验委托数据已经不存在或未生成委托,请核实数据!");
  1508. return cro;
  1509. }
  1510. //获取数据进行验证
  1511. TreeSet<String> sizes=new TreeSet<String>();
  1512. for (int i = 0; i < lists.size(); i++) {
  1513. HashMap obj=lists.get(i);
  1514. sizes.add((String)obj.get("SMP_CATG"));
  1515. if("1".equals((String)obj.get("SMP_TYPE_CODE"))){
  1516. cro.setV_errCode(-1);
  1517. cro.setV_errMsg("复样委托不能用预测抽样按钮,请核实数据!");
  1518. return cro;
  1519. }
  1520. }
  1521. if (sizes.size()!=1) {
  1522. cro.setV_errCode(-1);
  1523. cro.setV_errMsg("待发送的检验委托数据只能同时发送一种类型的待检数据,请核实数据!");
  1524. return cro;
  1525. }
  1526. JSONArray tarDate=new JSONArray();
  1527. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  1528. Date date=new Date();
  1529. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1530. String dateString=simpleDateFormat.format(date);
  1531. //生成委托编号
  1532. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  1533. sqlucomm.setLength(0);
  1534. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  1535. HashMap map=mapper.queryOne(sqlucomm.toString());
  1536. BigDecimal count = BigDecimal.ZERO;
  1537. if( null != map.get("BIGSEQ")){
  1538. count=(BigDecimal)map.get("BIGSEQ");
  1539. }
  1540. if (count.compareTo(BigDecimal.ZERO)==1) {
  1541. count=count.add(BigDecimal.ONE);
  1542. }else{
  1543. count=BigDecimal.ONE;
  1544. }
  1545. consignNo=consignNo+String.format("%03d", count.intValue());
  1546. System.out.println("======="+count.intValue());
  1547. int seq=1;
  1548. for (int i = 0; i < lists.size(); i++) {
  1549. HashMap obj=lists.get(i);
  1550. obj.put("SEND_ID", sendId);
  1551. obj.put("SEND_NAME", sendName);
  1552. obj.put("CONSIGN_NO", consignNo);
  1553. obj.put("CONSIGN_NO_SEQ", seq++);
  1554. obj.put("SEND_TIME", dateString);
  1555. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  1556. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  1557. //目标json
  1558. JSONObject tarObj=new JSONObject();
  1559. //主表数据
  1560. createTarObj(tarObj,smpleD);
  1561. if(obj.get("PLINE_CODE").equals("RZ1")){
  1562. //发送序号
  1563. String sendSeq=createSendSeq(obj.get("PLINE_CODE").toString());
  1564. //String sendQ="select to_number(substr('"+sendSeq+"', 8)) PRINT_SEQ from dual t ";
  1565. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  1566. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  1567. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();
  1568. tarObj.put("printSeq", 'R'+PRINT_SEQ);
  1569. PRINT_SEQ='R'+PRINT_SEQ;
  1570. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"' "
  1571. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and SPECIMEN_NO = '"+obj.get("SPECIMEN_NO")+"' ";
  1572. mapper.updateJudgeStatus(qcmSendSeq.toString());
  1573. tarObj.put("sendSeq", sendSeq);
  1574. //判定厚度
  1575. String strRz=" select to_char(t.dcs_thk,'fm990.099') DCS_THK from tbh02_coil_comm t "
  1576. + " where T.OLD_SAMPL_NO ='"+tarObj.getString("materialNo")+"' and t.dcs_thk is not null and rownum=1";
  1577. List<HashMap> hmRz=mapper.query(strRz.toString());
  1578. String dcsThk = "";
  1579. if(hmRz!=null && hmRz.size()>=1){
  1580. dcsThk=hmRz.get(0).get("DCS_THK").toString();
  1581. }
  1582. tarObj.put("dcsThk", dcsThk);//判定厚度人工输入
  1583. }
  1584. tarObj.put("CREATE_ID", sendId);
  1585. tarObj.put("CREATE_NAME", sendName);
  1586. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  1587. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  1588. if ("5000".equals(obj.get("CERT_INST_CODE"))) {
  1589. tarObj.put("type", "0");
  1590. }else{
  1591. tarObj.put("type", "1");
  1592. }
  1593. if ("B".equals(obj.get("SMP_CATG"))) {
  1594. //材质
  1595. sqlucomm.setLength(0);
  1596. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.SMP_NO,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  1597. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  1598. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.QUOTE_SEQ,T.MEMO,T.ITEM_CODE_L,"
  1599. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.CREATE_TIME,T.CREATE_ID,T.CREATE_NAME,T.SPECL_FL, "
  1600. + "T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,t.STDMEMO from QCM_JHY_SAMPLE_CONSIGN_D_ITEM T"
  1601. + " WHERE T.SPECIMEN_NO='"+obj.get("SPECIMEN_NO")+"' and (T.QUOTE_SPECIMEN_NO is null or T.QUOTE_SPECIMEN_NO='') and t.Fy_Quote_Specimen_No is null ");
  1602. List<HashMap> items=mapper.query(sqlucomm.toString());
  1603. if (items!=null && items.size()>0) {
  1604. JSONArray arrayItem=new JSONArray();
  1605. for(int j = 0 ;j < items.size() ; j++){
  1606. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  1607. JSONObject tarItem=new JSONObject();
  1608. //子表数据
  1609. createItem(tarItem,oldItem);
  1610. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  1611. tarItem.put("tsFlag", "1");//探伤
  1612. }else{
  1613. tarItem.put("tsFlag", "0");//非探伤
  1614. }
  1615. arrayItem.add(tarItem);
  1616. }
  1617. tarObj.put("items", arrayItem);
  1618. }
  1619. }else{
  1620. //成分
  1621. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  1622. tarObj.putAll(chemItem);
  1623. }
  1624. tarDate.add(tarObj);
  1625. HashMap<String,String> hm = new HashMap<String,String>();
  1626. hm.put("SPECIMEN_NO", obj.get("SPECIMEN_NO").toString());
  1627. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  1628. hm.put("PLINE_CODE", LCplineCode);
  1629. if(LCplineCode.equals("RZ1")){
  1630. LCtarDate.add(tarObj);
  1631. String strjg=qcmJg(hm);
  1632. mapper.insert(strjg);
  1633. }
  1634. }
  1635. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  1636. String tar=tarDate.toString();
  1637. String result = "";//调用url
  1638. try{
  1639. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  1640. if (result == null ||result.equals("null") || result.equals("")) {
  1641. cro.setV_errCode(-1);
  1642. cro.setV_errMsg("发送人工抽样LIMS系统失败!返回值:"+result);
  1643. SqlSession.rollback();
  1644. return cro;
  1645. }
  1646. }catch(Exception e){
  1647. cro.setV_errCode(-1);
  1648. cro.setV_errMsg(e.getMessage());
  1649. SqlSession.rollback();
  1650. return cro;
  1651. }
  1652. String resultlist =result.substring(8, 11);
  1653. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  1654. cro.setV_errCode(-1);
  1655. cro.setV_errMsg("发送人工抽样LIMS系统失败!"+result);
  1656. SqlSession.rollback();
  1657. return cro;
  1658. }
  1659. String inspectionLot = "";//检验号
  1660. String oldSamplNo = "";//钢卷号
  1661. if(resultlist.equals("200")){
  1662. for (HashMap list : lists) {
  1663. String sqlR = "update QCM_JHY_SAMPLE_CONSIGN_D "
  1664. +" set SAMPL_PICK_RY = 'R' "
  1665. +" where SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' ";
  1666. mapper.UpdateQcmWt(sqlR.toString());
  1667. //修改 组批区间的所有数据
  1668. //查询检验 拿到当前取样编号的所需数据 热轧轧辊单元 组批区间 钢卷号 流水号
  1669. String sql="select t.OLD_SAMPL_NO,t.ROLL_MANA_NO,t.ROLL_SLAB_SEQ,t.MIXROLL,t.SPECIMEN_NO,t.INSPECTION_LOT from ("
  1670. + " select t3.OLD_SAMPL_NO,t4.ROLL_MANA_NO,t4.ROLL_SLAB_SEQ,t4.MIXROLL,t1.SPECIMEN_NO,t1.INSPECTION_LOT "
  1671. +" from QCM_JHY_SAMPLE_CONSIGN_D t1, "
  1672. +" QCM_JHY_SAMPLE_CONSIGN_M t2, "
  1673. +" QCM_JHY_SAMPLE_R_ORD ord, "
  1674. +" tbh02_coil_comm t3, "
  1675. +" tbf02_spec_mill t4 "
  1676. +" where t1.SMP_NO = t2.SMP_NO "
  1677. +" and t1.smp_no = ord.smp_no "
  1678. +" and t1.inspection_lot = t3.SAMPL_NO "
  1679. +" and t3.COIL_NO = t4.COIL_NO "
  1680. +" and t1.validflag = '1' "
  1681. +" and t1.STATUS = '0' "
  1682. +" and t1.pline_code = 'RZ1' "
  1683. +" and t1.specimen_no = '"+list.get("SPECIMEN_NO")+"' "
  1684. +" and t3.OLD_SAMPL_NO = t1.material_no "
  1685. + " order by t4.ROLL_SLAB_SEQ asc ) t "
  1686. + " where rownum <= 1 ";
  1687. List<HashMap> hMap=mapper.query(sql.toString());
  1688. if (hMap!=null || hMap.size()>0) {
  1689. for (HashMap hm : hMap) {
  1690. inspectionLot = (String)hm.get("INSPECTION_LOT");
  1691. oldSamplNo = (String)hm.get("OLD_SAMPL_NO");
  1692. //拿到 热轧轧辊单元 组批区间 钢卷号 查询出这个区间的所有取样编号
  1693. sql = "";
  1694. sql = "select t4.ROLL_MANA_NO,t4.MIXROLL,t1.SPECIMEN_NO "
  1695. +" from QCM_JHY_SAMPLE_CONSIGN_D t1, "
  1696. +" QCM_JHY_SAMPLE_CONSIGN_M t2, "
  1697. +" QCM_JHY_SAMPLE_R_ORD ord, "
  1698. +" tbh02_coil_comm t3, "
  1699. +" tbf02_spec_mill t4 "
  1700. +" where t1.SMP_NO = t2.SMP_NO "
  1701. +" and t1.smp_no = ord.smp_no "
  1702. +" and t1.inspection_lot = t3.SAMPL_NO "
  1703. +" and t3.COIL_NO = t4.COIL_NO "
  1704. +" and t1.validflag = '1' "
  1705. +" and t1.STATUS = '0' "
  1706. +" and t1.pline_code = 'RZ1' "
  1707. +" and t4.ROLL_MANA_NO='"+hm.get("ROLL_MANA_NO")+"' "
  1708. +" and t4.MIXROLL='"+hm.get("MIXROLL")+"' "
  1709. +" group by t4.ROLL_MANA_NO,t4.MIXROLL,t1.SPECIMEN_NO ";
  1710. List<HashMap> specimenNoList=mapper.query(sql.toString());
  1711. if (specimenNoList!=null || specimenNoList.size()>0) {
  1712. //1、先删除当前取样编号实绩 再把抽样的实绩判定状态改成已判 材质检验结果表
  1713. sql = "";
  1714. sql ="delete QCM_JHY_INSP_PHYSICS t where t.specimen_no = '"+list.get("SPECIMEN_NO")+"' and SEQ<=49 ";
  1715. mapper.delete(sql.toString());
  1716. for (HashMap hashMap : specimenNoList) {
  1717. //给所有的取样编号 标记 热轧轧辊单元 组批区间 钢卷号
  1718. sql = "";
  1719. sql = "update QCM_JHY_SAMPLE_CONSIGN_D "
  1720. +" set STATUS = '2', "
  1721. +" SEND_TIME = sysdate, "
  1722. +" CONSIGN_NO = '"+list.get("CONSIGN_NO")+"', "
  1723. +" CONSIGN_NO_SEQ = '"+list.get("CONSIGN_NO_SEQ")+"', "
  1724. +" SEND_ID = '"+sendId+"', "
  1725. +" SEND_NAME = '"+sendName+"', "
  1726. +" RZ_ROLL_MANA_NO = '"+hashMap.get("ROLL_MANA_NO")+"', "
  1727. +" RZ_MIXROLL = '"+hashMap.get("MIXROLL")+"', "
  1728. +" RZ_OLD_SAMPL_NO = '"+hm.get("OLD_SAMPL_NO")+"', "
  1729. +" RZ_ROLL_SLAB_SEQ = '"+hm.get("ROLL_SLAB_SEQ")+"' "
  1730. +" where SPECIMEN_NO = '"+hashMap.get("SPECIMEN_NO")+"' ";
  1731. mapper.UpdateQcmWt(sql.toString());
  1732. //2、删除了当前取样编号实绩 再把抽样的实绩QCM_JHY_SAMPLE_R_ORD判定状态改成已判 JUDGE_STATUS判定状态(0:待判,1已判)
  1733. String specimenNo1 = list.get("SPECIMEN_NO").toString();//抽样取样编号
  1734. String specimenNo2 = hashMap.get("SPECIMEN_NO").toString();//所有取样编号
  1735. if(!specimenNo1.equals(specimenNo2)){
  1736. sql = "";
  1737. sql = " update QCM_JHY_SAMPLE_R_ORD ord set ord.judge_status = '1' "
  1738. +" where ord.pline_code = 'RZ1' and ord.smp_no in ( "
  1739. +" select t.smp_no from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' "
  1740. +" ) ";
  1741. mapper.UpdateQcmWt(sql.toString());
  1742. }
  1743. }
  1744. }
  1745. }
  1746. }
  1747. }
  1748. cro.setV_errCode(1);
  1749. cro.setV_errMsg("人工抽样成功");
  1750. String storage = "{CALL COILJUDGE_STATUS_BKD(?,?)}";
  1751. CallableStatement cstm = conn.prepareCall(storage);
  1752. cstm.setString(1,inspectionLot);
  1753. cstm.setString(2,oldSamplNo);
  1754. cstm.execute();
  1755. cstm.close();
  1756. }
  1757. /*String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  1758. List<HashMap> lists = mapper.query(sqlLog);*/
  1759. for (HashMap list : lists) {
  1760. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  1761. qjog.setOperate_name(sendName);
  1762. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  1763. qjog.setOperate_type("热轧预测抽样");
  1764. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  1765. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  1766. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  1767. mapper.insertQcmJudgeOperateLog(qjog);
  1768. }
  1769. SqlSession.commit();
  1770. //全自动激光切割加工中心系统
  1771. /*if(LCplineCode.equals("RZ1") && LCtarDate.size()>=1 ){
  1772. String jgkg=QcmJhyJgKg(LCplineCode);
  1773. if("1".equals(jgkg)){
  1774. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  1775. String LCtar=LCtarDate.toString();
  1776. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  1777. }
  1778. }*/
  1779. } catch (Exception e) {
  1780. // TODO Auto-generated catch block
  1781. e.printStackTrace();
  1782. SqlSession.rollback();
  1783. cro.setV_errCode(-1);
  1784. cro.setV_errMsg("发送人工抽样委托失败!"+e.getMessage());
  1785. return cro;
  1786. }finally {
  1787. SqlSession.close();
  1788. }
  1789. return cro;
  1790. }
  1791. /**
  1792. * 热轧 人工选样发送 调用LIMS接收委托接口,实现委托下发
  1793. * @return cro
  1794. * @throws IOException
  1795. */
  1796. @SuppressWarnings("unchecked")
  1797. public CoreReturnObject SendLimesRZXY(HashMap parmas,String Entrust){
  1798. Connection conn = this.getDao("testDao").getConnection();
  1799. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  1800. try {
  1801. String sendId=parmas.get("USERID").toString();
  1802. String sendName=parmas.get("USERNAME").toString();
  1803. String LCplineCode="LC";//全自动激光切割加工中心系统
  1804. StringBuffer sqlucomm = new StringBuffer();
  1805. TreeSet<String> treeSnoS = new TreeSet<String>();//所有取样编号
  1806. String[] ja=Entrust.split(",");
  1807. String msInfo="";//所有取样编号
  1808. if (ja!=null && ja.length>0) {
  1809. for (int i = 0; i < ja.length; i++) {
  1810. String sp = ja[i];
  1811. treeSnoS.add(sp);
  1812. if ("".equals(msInfo)) {
  1813. msInfo="'"+sp+"'";
  1814. }else{
  1815. msInfo=msInfo+"'"+sp+"'";
  1816. }
  1817. if (i !=ja.length-1) {
  1818. msInfo=msInfo+",";
  1819. }
  1820. }
  1821. }
  1822. TreeSet<String> treesno = new TreeSet<String>();
  1823. TreeSet<String> treeSet = new TreeSet<String>();
  1824. String[] ja1=parmas.get("SPECIMEN_NO").toString().split(",");//选样编号
  1825. String[] jmno=parmas.get("MATERIAL_NO").toString().split(","); //选样子板号
  1826. String msInfo1="";//选样编号
  1827. if (ja1!=null && ja1.length>0) {
  1828. for (int i = 0; i < ja1.length; i++) {
  1829. String sp = ja1[i];//选样取样编号
  1830. treesno.add(sp);//选样取样编号
  1831. String mno = jmno[i];//选样子板号
  1832. treeSet.add(mno);//子板号
  1833. if ("".equals(msInfo1)) {
  1834. msInfo1="'"+sp+"'";
  1835. }else{
  1836. msInfo1=msInfo1+"'"+sp+"'";
  1837. }
  1838. if (i !=ja1.length-1) {
  1839. msInfo1=msInfo1+",";
  1840. }
  1841. }
  1842. }
  1843. //判断复样选的是两个子板号,但是委托样条是同一个
  1844. if(treeSet.size()>=2 && treesno.size()==1 ){
  1845. cro.setV_errCode(-1);
  1846. cro.setV_errMsg("勾选错误,勾选了两个钢卷号,但是委托样条只取了一个,请选择不同的取样编号委托样条!");
  1847. return cro;
  1848. }
  1849. //判断是初样还是复样,修改送样编号的子板号
  1850. if(treeSet.size()==1){//子板号只有一个
  1851. for (String set : treesno) {
  1852. String sql = "update QCM_JHY_SAMPLE_CONSIGN_D set MATERIAL_NO = '"+treeSet.last()+"' "
  1853. +" where SPECIMEN_NO = '"+set+"' ";
  1854. mapper.UpdateQcmWt(sql.toString());
  1855. }
  1856. }else if (treeSet.size()==2){
  1857. String sql = "update QCM_JHY_SAMPLE_CONSIGN_D set MATERIAL_NO = '"+treeSet.last()+"' "
  1858. +" where SPECIMEN_NO = '"+treesno.last()+"' ";
  1859. mapper.UpdateQcmWt(sql.toString());
  1860. String sql2 = "update QCM_JHY_SAMPLE_CONSIGN_D set MATERIAL_NO = '"+treeSet.first()+"' "
  1861. +" where SPECIMEN_NO = '"+treesno.first()+"' ";
  1862. mapper.UpdateQcmWt(sql2.toString());
  1863. }
  1864. SqlSession.commit();
  1865. //查询检验
  1866. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  1867. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  1868. + " d.SMP_LOCATION,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  1869. + "d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,"
  1870. + "m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,d.SEND_SEQ "
  1871. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  1872. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  1873. + " where d.SPECIMEN_NO in ("+msInfo1+") and d.VALIDFLAG='1' and d.STATUS='0'");
  1874. List<HashMap> lists=mapper.query(sqlucomm.toString());
  1875. if (lists==null || lists.size()<1) {
  1876. cro.setV_errCode(-1);
  1877. cro.setV_errMsg("待发送的检验委托数据已经不存在或未生成委托,请核实数据!");
  1878. return cro;
  1879. }
  1880. //获取数据进行验证
  1881. TreeSet<String> sizes=new TreeSet<String>();
  1882. for (int i = 0; i < lists.size(); i++) {
  1883. HashMap obj=lists.get(i);
  1884. sizes.add((String)obj.get("SMP_CATG"));
  1885. }
  1886. if (sizes.size()!=1) {
  1887. cro.setV_errCode(-1);
  1888. cro.setV_errMsg("待发送的检验委托数据只能同时发送一种类型的待检数据,请核实数据!");
  1889. return cro;
  1890. }
  1891. JSONArray tarDate=new JSONArray();
  1892. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  1893. Date date=new Date();
  1894. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1895. String dateString=simpleDateFormat.format(date);
  1896. //生成委托编号
  1897. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  1898. sqlucomm.setLength(0);
  1899. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  1900. HashMap map=mapper.queryOne(sqlucomm.toString());
  1901. BigDecimal count = BigDecimal.ZERO;
  1902. if( null != map.get("BIGSEQ")){
  1903. count=(BigDecimal)map.get("BIGSEQ");
  1904. }
  1905. if (count.compareTo(BigDecimal.ZERO)==1) {
  1906. count=count.add(BigDecimal.ONE);
  1907. }else{
  1908. count=BigDecimal.ONE;
  1909. }
  1910. consignNo=consignNo+String.format("%03d", count.intValue());
  1911. System.out.println("======="+count.intValue());
  1912. int seq=1;
  1913. for (int i = 0; i < lists.size(); i++) {
  1914. HashMap obj=lists.get(i);
  1915. obj.put("SEND_ID", sendId);
  1916. obj.put("SEND_NAME", sendName);
  1917. obj.put("CONSIGN_NO", consignNo);
  1918. obj.put("CONSIGN_NO_SEQ", seq++);
  1919. obj.put("SEND_TIME", dateString);
  1920. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  1921. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  1922. //目标json
  1923. JSONObject tarObj=new JSONObject();
  1924. //主表数据
  1925. createTarObj(tarObj,smpleD);
  1926. if(obj.get("PLINE_CODE").equals("RZ1")){
  1927. //发送序号
  1928. String sendSeq=createSendSeq(obj.get("PLINE_CODE").toString());
  1929. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  1930. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  1931. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();
  1932. tarObj.put("printSeq", 'R'+PRINT_SEQ);
  1933. PRINT_SEQ='R'+PRINT_SEQ;
  1934. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"' "
  1935. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and SPECIMEN_NO = '"+obj.get("SPECIMEN_NO")+"' ";
  1936. mapper.updateJudgeStatus(qcmSendSeq.toString());
  1937. tarObj.put("sendSeq", sendSeq);
  1938. //判定厚度
  1939. String strRz=" select to_char(t.dcs_thk,'fm990.099') DCS_THK from tbh02_coil_comm t "
  1940. + " where T.OLD_SAMPL_NO ='"+tarObj.getString("materialNo")+"' and t.dcs_thk is not null and rownum=1";
  1941. List<HashMap> hmRz=mapper.query(strRz.toString());
  1942. String dcsThk = "";
  1943. if(hmRz!=null && hmRz.size()>=1){
  1944. dcsThk=hmRz.get(0).get("DCS_THK").toString();
  1945. }
  1946. tarObj.put("dcsThk", dcsThk);//判定厚度人工输入
  1947. }
  1948. tarObj.put("CREATE_ID", sendId);
  1949. tarObj.put("CREATE_NAME", sendName);
  1950. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  1951. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  1952. if ("5000".equals(obj.get("CERT_INST_CODE"))) {
  1953. tarObj.put("type", "0");
  1954. }else{
  1955. tarObj.put("type", "1");
  1956. }
  1957. if ("B".equals(obj.get("SMP_CATG"))) {
  1958. //材质
  1959. sqlucomm.setLength(0);
  1960. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.SMP_NO,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  1961. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  1962. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.QUOTE_SEQ,T.MEMO,T.ITEM_CODE_L,"
  1963. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.CREATE_TIME,T.CREATE_ID,T.CREATE_NAME,T.SPECL_FL, "
  1964. + "T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,t.STDMEMO from QCM_JHY_SAMPLE_CONSIGN_D_ITEM T"
  1965. + " WHERE T.SPECIMEN_NO='"+obj.get("SPECIMEN_NO")+"' and (T.QUOTE_SPECIMEN_NO is null or T.QUOTE_SPECIMEN_NO='') and t.Fy_Quote_Specimen_No is null ");
  1966. List<HashMap> items=mapper.query(sqlucomm.toString());
  1967. if (items!=null && items.size()>0) {
  1968. JSONArray arrayItem=new JSONArray();
  1969. for(int j = 0 ;j < items.size() ; j++){
  1970. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  1971. JSONObject tarItem=new JSONObject();
  1972. //子表数据
  1973. createItem(tarItem,oldItem);
  1974. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  1975. tarItem.put("tsFlag", "1");//探伤
  1976. }else{
  1977. tarItem.put("tsFlag", "0");//非探伤
  1978. }
  1979. arrayItem.add(tarItem);
  1980. }
  1981. tarObj.put("items", arrayItem);
  1982. }
  1983. }else{
  1984. //成分
  1985. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  1986. tarObj.putAll(chemItem);
  1987. }
  1988. tarDate.add(tarObj);
  1989. HashMap<String,String> hm = new HashMap<String,String>();
  1990. hm.put("SPECIMEN_NO", obj.get("SPECIMEN_NO").toString());
  1991. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  1992. hm.put("PLINE_CODE", LCplineCode);
  1993. if(LCplineCode.equals("RZ1")){
  1994. LCtarDate.add(tarObj);
  1995. String strjg=qcmJg(hm);
  1996. mapper.insert(strjg);
  1997. }
  1998. }
  1999. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  2000. String tar=tarDate.toString();
  2001. String result = "";//调用url
  2002. try{
  2003. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  2004. if (result == null ||result.equals("null") || result.equals("")) {
  2005. cro.setV_errCode(-1);
  2006. cro.setV_errMsg("送样发送LIMS系统失败!返回值:"+result);
  2007. SqlSession.rollback();
  2008. return cro;
  2009. }
  2010. }catch(Exception e){
  2011. cro.setV_errCode(-1);
  2012. cro.setV_errMsg(e.getMessage());
  2013. SqlSession.rollback();
  2014. return cro;
  2015. }
  2016. String resultlist =result.substring(8, 11);
  2017. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  2018. cro.setV_errCode(-1);
  2019. cro.setV_errMsg("送样发送LIMS系统失败!返回值:"+result);
  2020. SqlSession.rollback();
  2021. return cro;
  2022. }
  2023. if(resultlist.equals("200")){
  2024. for (HashMap list : lists) {
  2025. String sql = "update QCM_JHY_SAMPLE_CONSIGN_D "
  2026. +" set STATUS = '2', "
  2027. +" SEND_TIME = sysdate, "
  2028. +" CONSIGN_NO = '"+list.get("CONSIGN_NO")+"', "
  2029. +" CONSIGN_NO_SEQ = '"+list.get("CONSIGN_NO_SEQ")+"', "
  2030. +" SEND_ID = '"+sendId+"', "
  2031. +" SEND_NAME = '"+sendName+"', "
  2032. +" SAMPL_PICK_RY = 'Y', "
  2033. +" QRZ_SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' "
  2034. +" where SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' ";
  2035. mapper.UpdateQcmWt(sql.toString());
  2036. treeSnoS.remove(list.get("SPECIMEN_NO"));
  2037. }
  2038. //判断是初样还是复样
  2039. if(parmas.get("SMP_TYPE_CODE").equals("0")){
  2040. for (String set : treeSnoS) {//所有取样编号
  2041. String str="0";
  2042. String treeSpNo=treesno.last();
  2043. for (String set2 : treesno) {//送样取样编号
  2044. if(set.equals(set2)){
  2045. str="1";
  2046. }
  2047. }
  2048. if(str.equals("1")){
  2049. continue;
  2050. }
  2051. String sql = "update QCM_JHY_SAMPLE_CONSIGN_D "
  2052. +" set STATUS = '1', "
  2053. +" SEND_TIME = sysdate, "
  2054. +" SEND_ID = '"+sendId+"', "
  2055. +" SEND_NAME = '"+sendName+"', "
  2056. +" QRZ_SPECIMEN_NO = '"+treeSpNo+"' "
  2057. +" where SPECIMEN_NO = '"+set+"' ";
  2058. mapper.UpdateQcmWt(sql.toString());
  2059. }
  2060. }else if(parmas.get("SMP_TYPE_CODE").equals("1")){
  2061. for (String set2 : treesno) {//送样取样编号
  2062. String jsno2= set2.substring(set2.length()-2);//截取后两位
  2063. for (String set : treeSnoS) {//所有取样编号
  2064. String jsno= set.substring(set.length()-2);//截取后两位
  2065. String str="0";
  2066. if(set2.equals(set) || !jsno2.equals(jsno)){//排除送样取样编号和复样取样编号后两位不一样的
  2067. str="1";
  2068. }
  2069. if(str.equals("1")){
  2070. continue;
  2071. }
  2072. String sql = "update QCM_JHY_SAMPLE_CONSIGN_D "
  2073. +" set STATUS = '1', "
  2074. +" SEND_TIME = sysdate, "
  2075. +" SEND_ID = '"+sendId+"', "
  2076. +" SEND_NAME = '"+sendName+"', "
  2077. +" QRZ_SPECIMEN_NO = '"+set2+"' "
  2078. +" where SPECIMEN_NO = '"+set+"' ";
  2079. mapper.UpdateQcmWt(sql.toString());
  2080. }
  2081. }
  2082. }
  2083. cro.setV_errCode(1);
  2084. cro.setV_errMsg("送样发送成功");
  2085. }
  2086. for (HashMap list : lists) {
  2087. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  2088. qjog.setOperate_name(sendName);
  2089. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  2090. qjog.setOperate_type("人工送样发送");
  2091. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  2092. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  2093. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  2094. mapper.insertQcmJudgeOperateLog(qjog);
  2095. }
  2096. SqlSession.commit();
  2097. //全自动激光切割加工中心系统
  2098. /*if(LCplineCode.equals("RZ1") && LCtarDate.size()>=1 ){
  2099. String jgkg=QcmJhyJgKg(LCplineCode);
  2100. if("1".equals(jgkg)){
  2101. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  2102. String LCtar=LCtarDate.toString();
  2103. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  2104. }
  2105. }*/
  2106. } catch (Exception e) {
  2107. // TODO Auto-generated catch block
  2108. e.printStackTrace();
  2109. SqlSession.rollback();
  2110. cro.setV_errCode(-1);
  2111. cro.setV_errMsg("人工送样发送委托失败!"+e.getMessage());
  2112. return cro;
  2113. }finally {
  2114. SqlSession.close();
  2115. }
  2116. return cro;
  2117. }
  2118. /**
  2119. * 中厚板 同轧批合并发送委托 调用LIMS接收委托接口,实现委托下发 中厚板合并发送
  2120. * @return cro
  2121. * @throws IOException
  2122. */
  2123. @SuppressWarnings("unchecked")
  2124. public CoreReturnObject ZHBmergeSendLIMES(String Entrust,String sendId,String sendName,String sampleDeliveryTime){
  2125. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  2126. try {
  2127. String LCplineCode="LC";//全自动激光切割加工中心系统
  2128. StringBuffer sqlucomm = new StringBuffer();
  2129. String[] ja=Entrust.split(",");
  2130. String msInfo="";
  2131. if (ja!=null && ja.length>0) {
  2132. for (int i = 0; i < ja.length; i++) {
  2133. String sp = ja[i];
  2134. if ("".equals(msInfo)) {
  2135. msInfo="'"+sp+"'";
  2136. }else{
  2137. msInfo=msInfo+"'"+sp+"'";
  2138. }
  2139. if (i !=ja.length-1) {
  2140. msInfo=msInfo+",";
  2141. }
  2142. }
  2143. }
  2144. //查询检验
  2145. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  2146. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  2147. + " d.SMP_LOCATION,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  2148. + "d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,"
  2149. + "m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG "
  2150. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  2151. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  2152. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS='0'");
  2153. List<HashMap> lists=mapper.query(sqlucomm.toString());
  2154. if (lists==null || lists.size()<1) {
  2155. cro.setV_errCode(-1);
  2156. cro.setV_errMsg("待发送的检验委托数据已经不存在,请核实数据!");
  2157. return cro;
  2158. }
  2159. //获取数据进行验证
  2160. TreeSet<String> sizes=new TreeSet<String>();
  2161. TreeSet<String> treeSetBatchNo=new TreeSet<String>();//轧批号
  2162. for (int i = 0; i < lists.size(); i++) {
  2163. HashMap obj=lists.get(i);
  2164. if(!"B".equals((String)obj.get("SMP_CATG"))){
  2165. cro.setV_errCode(-1);
  2166. cro.setV_errMsg("只能合并材质委托!!!");
  2167. return cro;
  2168. }
  2169. sizes.add((String)obj.get("SMP_CATG"));
  2170. treeSetBatchNo.add((String)obj.get("BATCH_NO"));
  2171. }
  2172. if (sizes.size()!=1) {
  2173. cro.setV_errCode(-1);
  2174. cro.setV_errMsg("待发送的检验委托数据只能同时发送一种类型的待检数据,请核实数据!");
  2175. return cro;
  2176. }
  2177. //判断是否是同轧批的
  2178. if(treeSetBatchNo.size()!=1){
  2179. cro.setV_errCode(-1);
  2180. cro.setV_errMsg("同轧批合并发送只能是一个轧批号!");
  2181. return cro;
  2182. }
  2183. String mnhhsql="select * from qcm_jhy_sample_consign_d t where t.Smp_Location like '%模拟焊后%' and t.batch_no = '"+treeSetBatchNo.first()+"' ";//判断是否是模拟焊后轧批
  2184. List<HashMap> listm= mapper.query(mnhhsql.toString());
  2185. if(listm!=null && listm.size()>=1){
  2186. cro.setV_errCode(-1);
  2187. cro.setV_errMsg("不允许同批合并发送!");
  2188. return cro;
  2189. }
  2190. //普锰板(Q235A/B、Q345A/B、Q355B)都是检测中心的
  2191. //提示 美标标准 指标准类别中含ASTM、ASME 不能合并
  2192. String tipsSql=" select r.STEEL_CODE,r.thick,r.CERT_INST_NAME,r.delivery_state_desc,t.MATERIAL_NO "
  2193. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2194. +" where t.smp_no = m.smp_no "
  2195. +" and t.smp_no = r.smp_no "
  2196. +" and t.freq_code <> 'D' "
  2197. +" and t.batch_no = '"+treeSetBatchNo.first()+"' "
  2198. +" and t.smp_type_code = '0' "
  2199. +" and t.status = '0' "
  2200. +" and (r.std_code like '%ASTM%' "
  2201. +" or r.std_code like '%ASME%' or r.Cert_Inst_Code = 'IC005' ) "
  2202. //+" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2203. + " and m.SMP_CATG = 'B' "
  2204. + " group by r.STEEL_CODE,r.thick,r.CERT_INST_NAME,r.delivery_state_desc,t.MATERIAL_NO ";
  2205. List<HashMap> tipsSqlhm=mapper.query(tipsSql.toString());
  2206. if(tipsSqlhm!=null && tipsSqlhm.size()>=1){
  2207. for (HashMap hashMap : tipsSqlhm) {
  2208. String materialNo= hashMap.get("MATERIAL_NO").toString();
  2209. String certInstName= hashMap.get("CERT_INST_NAME").toString();
  2210. cro.setV_errCode(-1);
  2211. cro.setV_errMsg("【"+materialNo+"】【"+certInstName+"】美标/ABS美国不能合并发送,需优先发送!美标标准指执行标准中含【ASTM、ASME】");
  2212. return cro;
  2213. }
  2214. }
  2215. String tmcpStr = "0";
  2216. String arStr = "0";
  2217. String crStr = "0";
  2218. TreeSet<String> TdeliveryStateDesc=new TreeSet<String>();//交货状态
  2219. //执行标准 ASTM ASME 非'5000','IC010','IC003','IC004','IC001' 不可合并
  2220. //,'IC009','IC006','IC007','IC002'
  2221. String sql="";
  2222. sql= "select r.delivery_state_desc,r.thick "
  2223. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2224. +" where t.smp_no = m.smp_no "
  2225. +" and t.smp_no = r.smp_no "
  2226. +" and t.freq_code <> 'D' "
  2227. +" and t.batch_no = '"+treeSetBatchNo.first()+"' "
  2228. +" and t.smp_type_code = '0' "
  2229. +" and t.status = '0' "
  2230. +" and r.std_code not like '%ASTM%' "
  2231. +" and r.std_code not like '%ASME%' "
  2232. +" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2233. + " and m.SMP_CATG = 'B' "
  2234. + " group by r.delivery_state_desc,r.thick";
  2235. List<HashMap> hmjh=mapper.query(sql.toString());
  2236. if (hmjh==null || hmjh.size()<1) {
  2237. cro.setV_errCode(-1);
  2238. cro.setV_errMsg("没有查询出可合并的委托:执行标准含【ASTM/ASME】、非【船板与普锰板(AR、CR、TMCP)】不可合并,需单独发送委托!");
  2239. return cro;
  2240. }
  2241. //船板 免检 执行标准带Rules 同一厚度 同一轧批次 交货状态TMCP、AR
  2242. if (hmjh!=null && hmjh.size()>=1) {
  2243. for (int i = 0; i < hmjh.size(); i++) {
  2244. HashMap obj=hmjh.get(i);
  2245. if(obj.get("DELIVERY_STATE_DESC").toString().equals("TMCP")){
  2246. tmcpStr="1";
  2247. TdeliveryStateDesc.add((String)obj.get("DELIVERY_STATE_DESC"));//交货状态
  2248. }
  2249. if(obj.get("DELIVERY_STATE_DESC").toString().equals("AR")){
  2250. arStr="1";
  2251. TdeliveryStateDesc.add((String)obj.get("DELIVERY_STATE_DESC"));//交货状态
  2252. }
  2253. if(obj.get("DELIVERY_STATE_DESC").toString().equals("CR")){
  2254. crStr="1";
  2255. TdeliveryStateDesc.add((String)obj.get("DELIVERY_STATE_DESC"));//交货状态
  2256. }
  2257. }
  2258. }
  2259. //这一个轧批中有 TMCP、AR 普锰板
  2260. String returnli = "0";
  2261. String tmcpArSpecimenNo = "";
  2262. //20230323修改 tmcpStr.equals("1") && arStr.equals("1")
  2263. //,'IC009','IC006','IC007','IC002'
  2264. if(TdeliveryStateDesc.size()>=1){
  2265. String zbsql= " select * from (select t.batch_no,t.SPECIMEN_NO,r.delivery_state_desc,r.thick,"
  2266. + " QCM_SPECFLAG(r.STEEL_CODE, r.THICK, r.std_code, m.CERT_INST_NAME) qcmSpecflag "
  2267. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2268. +" where t.smp_no = m.smp_no "
  2269. +" and t.smp_no = r.smp_no "
  2270. +" and t.freq_code <> 'D' "
  2271. +" and t.batch_no = '"+treeSetBatchNo.first()+"' "
  2272. +" and t.smp_type_code = '0' "
  2273. +" and t.status = '0' "
  2274. +" and r.std_code not like '%ASTM%' "
  2275. +" and r.std_code not like '%ASME%' "
  2276. +" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2277. + " and m.SMP_CATG = 'B'"
  2278. + " and r.delivery_state_desc in ('TMCP','AR','CR') "
  2279. + " and (r.STD_CODE like '%Rules' OR r.steel_code in ('Q235A','Q235B','Q345A','Q345B','Q355B')) "
  2280. + " ) t where t.qcmSpecflag in ('1','0') ";
  2281. List<HashMap> zbhashMap=mapper.query(zbsql.toString());
  2282. if(zbhashMap !=null && zbhashMap.size() >=2){//起码船板有两条数据
  2283. TreeSet<String> tredsdesc=new TreeSet<String>();//交货状态
  2284. TreeSet<String> tsetThick=new TreeSet<String>();//厚度 船板用
  2285. TreeSet<String> treesp=new TreeSet<String>();
  2286. //判断是否是船板 交货状态 两个 厚度一个
  2287. for (int i = 0; i < zbhashMap.size(); i++) {
  2288. HashMap obj=zbhashMap.get(i);
  2289. tredsdesc.add((String)obj.get("DELIVERY_STATE_DESC"));//交货状态
  2290. tsetThick.add((String)obj.get("THICK"));//厚度
  2291. treesp.add((String)obj.get("SPECIMEN_NO"));
  2292. if (StringUtils.isBlank(tmcpArSpecimenNo)) {
  2293. tmcpArSpecimenNo="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2294. }else{
  2295. tmcpArSpecimenNo=tmcpArSpecimenNo+","+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2296. }
  2297. /* if (i !=lists.size()-1) {
  2298. tmcpArSpecimenNo=tmcpArSpecimenNo+",";
  2299. }*/
  2300. }
  2301. //20230324 tredsdesc.size() >= 2
  2302. if(tredsdesc.size() >= 1 && tsetThick.size() == 1 && treesp.size() >= 2){
  2303. String returns = tmcpAr(zbhashMap, sendId, sendName, sampleDeliveryTime);//TMCP/AR 单独合并
  2304. if(!returns.equals("200")){
  2305. cro.setV_errCode(-1);
  2306. cro.setV_errMsg("免船检TMCP/AR/CR失败:"+returns);
  2307. return cro;
  2308. }else{
  2309. returnli = "200";
  2310. }
  2311. }
  2312. }
  2313. }
  2314. String sqlSpecimenNo= "";
  2315. if(returnli.equals("200")){
  2316. sqlSpecimenNo = " and t.SPECIMEN_NO not in ("+tmcpArSpecimenNo+")";
  2317. }
  2318. //提示 是否是单个
  2319. for (int i = 0; i < hmjh.size(); i++) {
  2320. //拿取能合并的所有取样编号
  2321. sql="";
  2322. sql= "select * from (select t.SMP_NO,t.SPECIMEN_NO,t.HEAT_NO,t.BATCH_NO,t.INSPECTION_LOT,t.FREQ_CODE,t.FREQ_NAME,"
  2323. + " t.MATERIAL_NO,t.SEND_MEMO,t.SMP_TYPE_CODE,t.SMP_TYPE_NAME,t.CONSIGN_NO,t.CONSIGN_NO_SEQ,t.TEST_QTY,t.SMP_QTY,"
  2324. + " t.SMP_LOCATION,t.BOARD_NO,t.QUOTE_CONSIGN_NO,t.OLD_CONSIGN_NO,t.PLINE_CODE,t.PLINE_NAME,t.CHEM_ITEM,"
  2325. + " t.SOURCE,t.PRODUCT_CNT,t.MEMO, r.STEEL_CODE,r.STEEL_NAME ,r.THICK,r.WIDTH ,r.LENGTH ,r.DESIGN_KEY,"
  2326. + " m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,t.PROCESS_NOS,r.Delivery_State_Desc, "
  2327. + " r.std_code, QCM_SPECFLAG(r.STEEL_CODE, r.THICK, r.std_code, m.CERT_INST_NAME) qcmSpecflag "
  2328. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2329. +" where t.smp_no = m.smp_no "
  2330. +" and t.smp_no = r.smp_no "
  2331. +" and t.freq_code <> 'D' "
  2332. +" and t.batch_no = '"+treeSetBatchNo.first()+"' "
  2333. +" and t.smp_type_code = '0' "
  2334. +" and t.status = '0' "
  2335. +" and r.std_code not like '%ASTM%' "
  2336. +" and r.std_code not like '%ASME%' "
  2337. +" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2338. + " and m.SMP_CATG = 'B' "
  2339. + " and r.Delivery_State_Desc = '"+hmjh.get(i).get("DELIVERY_STATE_DESC")+"' "
  2340. + " and r.thick = '"+hmjh.get(i).get("THICK")+"' "
  2341. + " order by r.STEEL_CODE) t "
  2342. + " where t.qcmSpecflag in ('1','0') "
  2343. + sqlSpecimenNo;
  2344. lists = null;
  2345. lists=mapper.query(sql.toString());
  2346. if (lists==null || lists.size()<=0) {
  2347. break;
  2348. }
  2349. if(lists!=null && lists.size()<=1){
  2350. String materialNo= lists.get(0).get("MATERIAL_NO").toString();
  2351. String certInstName= lists.get(0).get("CERT_INST_NAME").toString();
  2352. String thick= lists.get(0).get("THICK").toString();
  2353. String steelCode= lists.get(0).get("STEEL_CODE").toString();
  2354. String dsdesc= lists.get(0).get("DELIVERY_STATE_DESC").toString();
  2355. cro.setV_errCode(-1);
  2356. cro.setV_errMsg("【"+materialNo+"】【"+certInstName+"】厚度【"+thick+"】牌号【"+steelCode+"】交货状态【"+dsdesc+"】"
  2357. + "满足以上条件的委托只有一条,请单独发送委托不用合并,需优先发送");
  2358. return cro;
  2359. }
  2360. }
  2361. //不同交货状态不能合并 同厚度
  2362. for (int y = 0; y < hmjh.size(); y++) {
  2363. String connectSpno = "";//连接这一批的取样编号查询
  2364. String connectSpno2 = "";//连接这一批的取样编号(最低牌号)
  2365. //拿取能合并的所有取样编号
  2366. sql="";
  2367. sql= "select * from (select t.SMP_NO,t.SPECIMEN_NO,t.HEAT_NO,t.BATCH_NO,t.INSPECTION_LOT,t.FREQ_CODE,t.FREQ_NAME,"
  2368. + " t.MATERIAL_NO,t.SEND_MEMO,t.SMP_TYPE_CODE,t.SMP_TYPE_NAME,t.CONSIGN_NO,t.CONSIGN_NO_SEQ,t.TEST_QTY,t.SMP_QTY,"
  2369. + " t.SMP_LOCATION,t.BOARD_NO,t.QUOTE_CONSIGN_NO,t.OLD_CONSIGN_NO,t.PLINE_CODE,t.PLINE_NAME,t.CHEM_ITEM,"
  2370. + " t.SOURCE,t.PRODUCT_CNT,t.MEMO, r.STEEL_CODE,r.STEEL_NAME ,r.THICK,r.WIDTH ,r.LENGTH ,r.DESIGN_KEY,"
  2371. + " m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,t.PROCESS_NOS, "
  2372. + " r.std_code, QCM_SPECFLAG(r.STEEL_CODE, r.THICK, r.std_code, m.CERT_INST_NAME) qcmSpecflag "
  2373. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2374. +" where t.smp_no = m.smp_no "
  2375. +" and t.smp_no = r.smp_no "
  2376. +" and t.freq_code <> 'D' "
  2377. +" and t.batch_no = '"+treeSetBatchNo.first()+"' "
  2378. +" and t.smp_type_code = '0' "
  2379. +" and t.status = '0' "
  2380. +" and r.std_code not like '%ASTM%' "
  2381. +" and r.std_code not like '%ASME%' "
  2382. +" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2383. + " and m.SMP_CATG = 'B' "
  2384. + " and r.Delivery_State_Desc = '"+hmjh.get(y).get("DELIVERY_STATE_DESC")+"' "
  2385. + " and r.thick = '"+hmjh.get(y).get("THICK")+"' "
  2386. + " order by r.STEEL_CODE) t "
  2387. + " where t.qcmSpecflag in ('1','0') "
  2388. + sqlSpecimenNo;
  2389. lists = null;
  2390. lists=mapper.query(sql.toString());
  2391. if (lists==null || lists.size()<=0) {
  2392. break;
  2393. }
  2394. String tresteelCode = "";
  2395. TreeSet<String> TREEsteelCode=new TreeSet<String>();//牌号
  2396. for (int i = 0; i < lists.size(); i++) {
  2397. HashMap obj=lists.get(i);
  2398. TREEsteelCode.add((String)obj.get("STEEL_CODE"));//牌号
  2399. //能合并的取样编号
  2400. if ("".equals(connectSpno)) {
  2401. connectSpno="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2402. connectSpno2="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2403. }else{
  2404. connectSpno=connectSpno+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2405. connectSpno2=connectSpno2+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2406. }
  2407. if (i !=lists.size()-1) {
  2408. connectSpno=connectSpno+",";
  2409. connectSpno2=connectSpno2+";";
  2410. }
  2411. }
  2412. //牌号合并
  2413. for (String string2 : TREEsteelCode) {//发给lims
  2414. String strSteelCode =string2;
  2415. if(StringUtils.isBlank(tresteelCode)){//是否为空牌号
  2416. tresteelCode = strSteelCode;
  2417. }else{
  2418. tresteelCode = tresteelCode +","+strSteelCode;
  2419. }
  2420. }
  2421. TreeSet<String> treeSetSpecimenNo=new TreeSet<String>();//取样编号
  2422. //美标牌号(指标准类别中含ASTM、ASME)不能跟其他标准牌号进行合并。
  2423. //查询当前轧批的所有取样编号下的项目(取样编号)
  2424. sql="";
  2425. sql = "select i.* from QCM_JHY_SAMPLE_CONSIGN_D_ITEM i "
  2426. +" where i.specimen_no in ( "+connectSpno+" ) and (i.QUOTE_SPECIMEN_NO is null or i.QUOTE_SPECIMEN_NO='') "
  2427. + " order by i.phy_code_l asc, i.phy_code_s asc, i.item_code_d asc, i.PHY_CODE_M desc ";//注意:排序按 升序 冲击温度 横向一定要到纵向之前
  2428. List<HashMap> hmap=mapper.query(sql.toString());
  2429. if(hmap==null && hmap.size()<=0 ){
  2430. break;
  2431. }
  2432. //判断有没有追加冲击试验 PHY_CODE_M:1 20230803
  2433. String phyMT="0";
  2434. sql="";
  2435. sql = "select i.* from QCM_JHY_SAMPLE_CONSIGN_D_ITEM i "
  2436. +" where i.specimen_no in ( "+connectSpno+" ) and (i.QUOTE_SPECIMEN_NO is null or i.QUOTE_SPECIMEN_NO='')"
  2437. +" and i.PHY_CODE_L='HC' and PHY_CODE_M='1' ";
  2438. List<HashMap> hmHC=mapper.query(sql.toString());
  2439. if(hmHC!=null && hmHC.size()>=1 ){
  2440. phyMT="1";//有追加冲击试验
  2441. }
  2442. //LIMS那边识别不了Q+T特殊字符 contains
  2443. String dsdContains = hmjh.get(y).get("DELIVERY_STATE_DESC").toString();
  2444. if(dsdContains.contains("+")){
  2445. dsdContains="A";
  2446. }else if(dsdContains.contains("-")){
  2447. dsdContains="B";
  2448. }
  2449. sql ="";
  2450. sql = "select nvl(max(to_number(substr(SPECIMEN_NO,-2))),0) NUMNO from QCM_JHY_ZHB_PHYSICS t where t.SPECIMEN_NO like 'ZHB"+treeSetBatchNo.first() + dsdContains+"%'";
  2451. List<HashMap> mapnumno=mapper.query(sql.toString());
  2452. BigDecimal hmap1 = (BigDecimal) mapnumno.get(0).get("NUMNO");
  2453. Integer hmap3 = Integer.parseInt(hmap1.toString());
  2454. hmap3++;
  2455. //ZHB+轧批号+交货状态+两位数
  2456. String specimenNo = "ZHB"+treeSetBatchNo.first()+dsdContains+String.format("%02d", hmap3);//组合取样材料号
  2457. for (HashMap hashMap : hmap) {//当前所有项目明细
  2458. treeSetSpecimenNo.add((String)hashMap.get("SPECIMEN_NO"));//获取当前所有参于的取样编号
  2459. //代码
  2460. String phyCodeL = (String) hashMap.get("PHY_CODE_L");//材质检验大项代码
  2461. String phyCodeM = (String) hashMap.get("PHY_CODE_M");//试样组代码
  2462. String phyCodeS = (String) hashMap.get("PHY_CODE_S");//材质检验项目代码
  2463. String itemCodeD = (String) hashMap.get("ITEM_CODE_D");//试验方向代码
  2464. String itemCodeT = (String) hashMap.get("ITEM_CODE_T");//试验温度代码 试验温度代码 冲击 被引用
  2465. String itemCodeS = (String) hashMap.get("ITEM_CODE_S");//试样尺寸代码
  2466. String itemCodeL = (String) hashMap.get("ITEM_CODE_L");//试验位置代码
  2467. //名称
  2468. String phyNameL = (String) hashMap.get("PHY_NAME_L");//材质检验大项
  2469. String phyNameM = (String) hashMap.get("PHY_NAME_M");//试样组
  2470. String phyNameS = (String) hashMap.get("PHY_NAME_S");//材质检验项目
  2471. String itemNameD = (String) hashMap.get("ITEM_NAME_D");//试验方向
  2472. String itemNameT = (String) hashMap.get("ITEM_NAME_T");//试验温度
  2473. String itemNameS = (String) hashMap.get("ITEM_NAME_S");//试样尺寸
  2474. String itemDescL = (String) hashMap.get("ITEM_DESC_L");//试验位置
  2475. String newItem=phyCodeL+"-"+phyCodeM+"-"+phyCodeS;
  2476. newItem=newItem+"-"+(itemCodeD!=null?itemCodeD:"null");
  2477. newItem=newItem+"-"+(itemCodeT!=null?itemCodeT:"null");
  2478. newItem=newItem+"-"+(itemCodeS!=null?itemCodeS:"null");
  2479. //newItem=newItem+"-"+(itemCodeL!=null?itemCodeL:"null");
  2480. String STDMIN_SIGN = (String) hashMap.get("STDMIN_SIGN");//标准范围下限符号
  2481. String STDMIN = (String) hashMap.get("STDMIN");//标准范围下限
  2482. String STDMAX_SIGN = (String) hashMap.get("STDMAX_SIGN");//标准范围上限符号
  2483. String STDMAX = (String) hashMap.get("STDMAX");//标准范围上限
  2484. STDMIN_SIGN = (STDMIN_SIGN!=null?STDMIN_SIGN:"");//标准范围下限符号
  2485. STDMIN = (STDMIN!=null?STDMIN:"");//标准范围下限
  2486. STDMAX_SIGN = (STDMAX_SIGN!=null?STDMAX_SIGN:"");//标准范围上限符号
  2487. STDMAX = (STDMAX!=null?STDMAX:"");//标准范围上限
  2488. //判断是否是冲击试验
  2489. if(phyCodeS.equals("C01") || phyCodeS.equals("C02")){
  2490. //有追加冲击试验 20230803
  2491. if(phyMT.equals("1")){
  2492. sql ="";
  2493. //材质检验大项代码 HC 材质检验项目C01/C02 试样组0/1(不要) 试验温度
  2494. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  2495. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.ITEM_CODE_T='"+itemCodeT+"'"
  2496. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  2497. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  2498. List<HashMap> zhbmap=mapper.query(sql.toString());
  2499. if(zhbmap==null || zhbmap.size()<=0 ){
  2500. //查询当前合并取样编号的最大序号
  2501. Integer seq=0;
  2502. sql ="";
  2503. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  2504. List<HashMap> seqmap=mapper.query(sql.toString());
  2505. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  2506. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  2507. String seqs = big.toString();
  2508. Integer seqint = Integer.parseInt(seqs);
  2509. seqint++;
  2510. seq=seqint;
  2511. }
  2512. sql="";
  2513. sql = "insert into qcm_jhy_zhb_physics "
  2514. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2515. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  2516. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2517. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,'有追加冲击试验',quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  2518. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  2519. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  2520. mapper.insert(sql);
  2521. }
  2522. continue;
  2523. }
  2524. sql ="";
  2525. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  2526. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  2527. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  2528. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  2529. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  2530. List<HashMap> zhbmap=mapper.query(sql.toString());
  2531. //没有查到说明合并中没有这一项
  2532. if(zhbmap==null || zhbmap.size()<=0 ){
  2533. //查询当前合并取样编号的最大序号
  2534. Integer seq=0;
  2535. sql ="";
  2536. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  2537. List<HashMap> seqmap=mapper.query(sql.toString());
  2538. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  2539. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  2540. String seqs = big.toString();
  2541. Integer seqint = Integer.parseInt(seqs);
  2542. seqint++;
  2543. seq=seqint;
  2544. }
  2545. sql="";
  2546. sql = "insert into qcm_jhy_zhb_physics "
  2547. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2548. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  2549. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2550. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  2551. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  2552. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  2553. mapper.insert(sql);
  2554. }else{
  2555. sql ="";
  2556. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  2557. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  2558. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  2559. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  2560. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  2561. List<HashMap> hmitemCode=mapper.query(sql.toString());
  2562. TreeSet<String> tritemCode=new TreeSet<String>();//试验方向代码 A 横向
  2563. TreeSet<String> tritemCode2=new TreeSet<String>();//试验方向代码 B 纵向
  2564. for (int i = 0; i < hmitemCode.size(); i++) {
  2565. if(hmitemCode.get(i).get("ITEM_CODE_D").toString().equals("A")){
  2566. tritemCode.add((String)hmitemCode.get(i).get("ITEM_CODE_D"));
  2567. }else if(hmitemCode.get(i).get("ITEM_CODE_D").toString().equals("B")){
  2568. tritemCode2.add((String)hmitemCode.get(i).get("ITEM_CODE_D"));
  2569. }
  2570. }
  2571. if(itemCodeD.equals("A")){//横向冲击可以替代纵向冲击
  2572. String itemCodeT2 = (String) hmitemCode.get(0).get("ITEM_CODE_T");//试验温度代码
  2573. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据
  2574. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据
  2575. if(co1t < co2t){ // -40 < -20 < 0 < 20 给lims下发最低的温度
  2576. sql = "";
  2577. sql =" update QCM_JHY_ZHB_PHYSICS t "
  2578. + " set t.ITEM_CODE_D = '"+itemCodeD+"', t.ITEM_NAME_D = '"+itemNameD+"', "
  2579. + " t.ITEM_CODE_T = '"+itemCodeT+"',t.ITEM_NAME_T = '"+itemNameT+"', "
  2580. + " t.ITEM_CODE_S = '"+itemCodeS+"',t.ITEM_NAME_S = '"+itemNameS+"', "
  2581. + " t.ITEM_CODE_L = '"+itemCodeL+"',t.ITEM_DESC_L = '"+itemDescL+"', "
  2582. + " t.PHY_GROUP_CODE='"+newItem+"', "
  2583. + " t.STDMIN_SIGN='"+STDMIN_SIGN+"', t.STDMIN='"+STDMIN+"', t.STDMAX_SIGN='"+STDMAX_SIGN+"', t.STDMAX='"+STDMAX+"' "
  2584. +" where t.specimen_no = '"+specimenNo+"' "
  2585. +" and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  2586. +" and t.PHY_CODE_S ='"+phyCodeS+"' ";
  2587. mapper.updateJudgeStatus(sql.toString());
  2588. }
  2589. }else if(itemCodeD.equals("B")){//纵向不能替代横向 如果纵向大于横向 从新加入一条纵向冲击
  2590. //判断横向
  2591. if(tritemCode.size()<=1 && tritemCode2.size()<=0){//没有纵向
  2592. String itemCodeT2 = (String) hmitemCode.get(0).get("ITEM_CODE_T");//试验温度代码
  2593. String itemCodeD2 = (String) hmitemCode.get(0).get("ITEM_CODE_D");//试验方向代码 A 横向0 -20 B 纵向 0 -20
  2594. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据 纵向温度
  2595. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据 横向温度
  2596. if(co1t < co2t){//如果纵向温度低于横向温度 插入
  2597. //查询当前合并取样编号的最大序号
  2598. Integer seq=0;
  2599. sql ="";
  2600. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  2601. List<HashMap> seqmap=mapper.query(sql.toString());
  2602. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  2603. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  2604. String seqs = big.toString();
  2605. Integer seqint = Integer.parseInt(seqs);
  2606. seqint++;
  2607. seq=seqint;
  2608. }
  2609. sql="";
  2610. sql = "insert into qcm_jhy_zhb_physics "
  2611. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2612. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  2613. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2614. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  2615. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  2616. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  2617. mapper.insert(sql);
  2618. }
  2619. }else {//到了这一步说明 合并中已经有了纵向的温度
  2620. sql ="";
  2621. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  2622. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  2623. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  2624. + " and t.PHY_CODE_S ='"+phyCodeS+"' and t.ITEM_CODE_D = 'B' "
  2625. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  2626. List<HashMap> hmB=mapper.query(sql.toString());
  2627. String itemCodeT2 = (String) hmB.get(0).get("ITEM_CODE_T");//试验温度代码
  2628. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据 纵向温度
  2629. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据 横向温度
  2630. if(co1t < co2t){ // -40 < -20 < 0 < 20 给lims下发最低的温度
  2631. sql = "";
  2632. sql =" update QCM_JHY_ZHB_PHYSICS t "
  2633. + " set t.ITEM_CODE_D = '"+itemCodeD+"', t.ITEM_NAME_D = '"+itemNameD+"', "
  2634. + " t.ITEM_CODE_T = '"+itemCodeT+"',t.ITEM_NAME_T = '"+itemNameT+"', "
  2635. + " t.ITEM_CODE_S = '"+itemCodeS+"',t.ITEM_NAME_S = '"+itemNameS+"', "
  2636. + " t.ITEM_CODE_L = '"+itemCodeL+"',t.ITEM_DESC_L = '"+itemDescL+"', "
  2637. + " t.PHY_GROUP_CODE='"+newItem+"', "
  2638. + " t.STDMIN_SIGN='"+STDMIN_SIGN+"', t.STDMIN='"+STDMIN+"', t.STDMAX_SIGN='"+STDMAX_SIGN+"', t.STDMAX='"+STDMAX+"' "
  2639. +" where t.specimen_no = '"+specimenNo+"' "
  2640. +" and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  2641. +" and t.PHY_CODE_S ='"+phyCodeS+"' and t.ITEM_CODE_D = 'B' ";
  2642. mapper.updateJudgeStatus(sql.toString());
  2643. }
  2644. }
  2645. }
  2646. }
  2647. }else{
  2648. sql ="";
  2649. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  2650. + " and t.PHY_GROUP_CODE='"+newItem+"' ";
  2651. List<HashMap> zhbmap=mapper.query(sql.toString());
  2652. //没有查到说明合并中没有这一项
  2653. if(zhbmap==null || zhbmap.size()<=0 ){
  2654. //查询当前合并取样编号的最大序号
  2655. Integer seq=0;
  2656. sql ="";
  2657. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  2658. List<HashMap> seqmap=mapper.query(sql.toString());
  2659. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  2660. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  2661. String seqs = big.toString();
  2662. Integer seqint = Integer.parseInt(seqs);
  2663. seqint++;
  2664. seq=seqint;
  2665. }
  2666. sql="";
  2667. sql = "insert into qcm_jhy_zhb_physics "
  2668. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2669. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  2670. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  2671. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  2672. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  2673. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  2674. mapper.insert(sql);
  2675. }
  2676. }
  2677. }
  2678. //修改所有的取样编号 合并标识
  2679. for (String string2 : treeSetSpecimenNo) {
  2680. sql = "";
  2681. sql =" update QCM_JHY_SAMPLE_CONSIGN_D t set t.ZHB_SPECIMEN_NO = '"+specimenNo+"' "
  2682. + " where t.SPECIMEN_NO ='"+string2+"' ";
  2683. mapper.updateJudgeStatus(sql.toString());
  2684. sql = "";
  2685. sql =" update QCM_JHY_SAMPLE_CONSIGN_D_ITEM t set t.ZHB_SPECIMEN_NO = '"+specimenNo+"' "
  2686. + " where t.SPECIMEN_NO ='"+string2+"' ";
  2687. mapper.updateJudgeStatus(sql.toString());
  2688. }
  2689. JSONArray tarDate=new JSONArray();
  2690. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  2691. Date date=new Date();
  2692. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  2693. String dateString=simpleDateFormat.format(date);
  2694. //生成委托编号
  2695. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  2696. sqlucomm.setLength(0);
  2697. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  2698. HashMap map=mapper.queryOne(sqlucomm.toString());
  2699. BigDecimal count = BigDecimal.ZERO;
  2700. if( null != map.get("BIGSEQ")){
  2701. count=(BigDecimal)map.get("BIGSEQ");
  2702. }
  2703. if (count.compareTo(BigDecimal.ZERO)==1) {
  2704. count=count.add(BigDecimal.ONE);
  2705. }else{
  2706. count=BigDecimal.ONE;
  2707. }
  2708. consignNo=consignNo+String.format("%03d", count.intValue());
  2709. System.out.println("======="+count.intValue());
  2710. int seq=1;
  2711. String plineCodeLims = "";//中厚板送样产线,按送样时间确定
  2712. //lists.size()
  2713. for (int i = 0; i < 1; i++) {
  2714. HashMap obj=lists.get(i);
  2715. //中厚板送样产线
  2716. if(obj.get("PLINE_CODE").toString().equals("ZB1") || obj.get("PLINE_CODE").toString().equals("HB1")){
  2717. if(sampleDeliveryTime.contains("06:30:00") || sampleDeliveryTime.contains("10:30:00") ||
  2718. sampleDeliveryTime.contains("17:30:00") || sampleDeliveryTime.contains("20:30:00")){
  2719. plineCodeLims = "HB1";
  2720. }else if(sampleDeliveryTime.contains("03:00:00") || sampleDeliveryTime.contains("11:00:00") ||
  2721. sampleDeliveryTime.contains("15:00:00") || sampleDeliveryTime.contains("18:00:00") ||
  2722. sampleDeliveryTime.contains("21:00:00") || sampleDeliveryTime.contains("06:00:00") ){
  2723. plineCodeLims = "ZB1";
  2724. }
  2725. }
  2726. obj.put("PLINE_CODE_LIMS", plineCodeLims);
  2727. obj.put("SPECIMEN_NO", specimenNo);
  2728. obj.put("SEND_ID", sendId);
  2729. obj.put("SEND_NAME", sendName);//发送人
  2730. obj.put("CONSIGN_NO", consignNo);//委托编号
  2731. obj.put("CONSIGN_NO_SEQ", seq++);
  2732. obj.put("SEND_TIME", dateString);//发送时间
  2733. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  2734. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  2735. //目标json
  2736. JSONObject tarObj=new JSONObject();
  2737. //主表数据
  2738. createTarObj(tarObj,smpleD);
  2739. //发送序号 createSendSeq
  2740. String sendSeq=createSendSeq(tarObj.getString("plineCode").toString());//发送序号
  2741. //String sendQ="select to_number(substr('"+sendSeq+"', 8)) PRINT_SEQ from dual t ";
  2742. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  2743. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  2744. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();
  2745. if(tarObj.getString("plineCode").equals("ZB1")){
  2746. tarObj.put("printSeq", 'Z'+PRINT_SEQ);
  2747. PRINT_SEQ='Z'+PRINT_SEQ;
  2748. }else if(tarObj.getString("plineCode").equals("HB1")){
  2749. tarObj.put("printSeq", 'H'+PRINT_SEQ);
  2750. PRINT_SEQ='H'+PRINT_SEQ;
  2751. }
  2752. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"' "
  2753. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and ZHB_SPECIMEN_NO = '"+specimenNo+"' ";
  2754. mapper.updateJudgeStatus(qcmSendSeq.toString());
  2755. tarObj.put("sendSeq", sendSeq);
  2756. tarObj.put("CREATE_ID", sendId);
  2757. tarObj.put("CREATE_NAME", sendName);
  2758. tarObj.put("sampleDeliveryTime", sampleDeliveryTime);//送样时间点
  2759. tarObj.put("steelCode",tresteelCode);//牌号合并
  2760. tarObj.put("steelName",tresteelCode);//牌号合并
  2761. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  2762. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  2763. //热处理号
  2764. tarObj.put("heatTreatment", obj.get("PROCESS_NOS"));
  2765. //传给lims的成分标识
  2766. String componentsql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t,QCM_JHY_SAMPLE_CONSIGN_M m "
  2767. +" where t.smp_no = m.smp_no and m.SMP_CATG = 'A' and t.batch_no = '"+smpleD.getString("BATCH_NO")+"' ";
  2768. List<HashMap> componentLog=mapper.query(componentsql.toString());
  2769. if(componentLog!=null && componentLog.size()>=1){
  2770. tarObj.put("componentLog", '1');//1代表有成分
  2771. }else{
  2772. tarObj.put("componentLog", '0');//0代表无成分
  2773. }
  2774. if ("5000".equals(obj.get("CERT_INST_CODE"))) {
  2775. tarObj.put("type", "0");
  2776. }else{
  2777. tarObj.put("type", "1");
  2778. }
  2779. if ("B".equals(obj.get("SMP_CATG"))) {
  2780. //材质
  2781. sqlucomm.setLength(0);
  2782. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  2783. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  2784. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.MEMO,T.ITEM_CODE_L,"
  2785. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.SPECL_FL,T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX, "
  2786. + " T.STDMEMO from QCM_JHY_ZHB_PHYSICS T"
  2787. + " WHERE T.SPECIMEN_NO='"+specimenNo+"' and t.VAL1 is null and t.SEND_LOG <> '1' ");
  2788. List<HashMap> items=mapper.query(sqlucomm.toString());
  2789. if (items!=null && items.size()>0) {
  2790. JSONArray arrayItem=new JSONArray();
  2791. for(int j = 0 ;j < items.size() ; j++){
  2792. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  2793. JSONObject tarItem=new JSONObject();
  2794. //子表数据
  2795. createItem(tarItem,oldItem);
  2796. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  2797. tarItem.put("tsFlag", "1");//探伤
  2798. }else{
  2799. tarItem.put("tsFlag", "0");//非探伤
  2800. }
  2801. arrayItem.add(tarItem);
  2802. }
  2803. tarObj.put("items", arrayItem);
  2804. }
  2805. }else{
  2806. //成分
  2807. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  2808. tarObj.putAll(chemItem);
  2809. }
  2810. tarDate.add(tarObj);
  2811. //全自动激光切割加工中心系统
  2812. HashMap<String,String> hm = new HashMap<String,String>();
  2813. hm.put("SPECIMEN_NO", specimenNo);
  2814. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  2815. hm.put("PLINE_CODE", "ZHB");
  2816. if(LCplineCode.equals("HB1")){
  2817. String lcThick = obj.get("THICK").toString();
  2818. double lcThick2 = Double.parseDouble(lcThick);
  2819. if(lcThick2<=25){
  2820. LCtarDate.add(tarObj);
  2821. String strjg=qcmJg(hm);
  2822. mapper.insert(strjg);
  2823. }
  2824. }else if(LCplineCode.equals("ZB1")){
  2825. LCtarDate.add(tarObj);
  2826. String strjg=qcmJg(hm);
  2827. mapper.insert(strjg);
  2828. }
  2829. }
  2830. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  2831. String tar=tarDate.toString();
  2832. String result = "";//调用url
  2833. try{
  2834. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  2835. if (result == null ||result.equals("null") || result.equals("")) {
  2836. cro.setV_errCode(-1);
  2837. cro.setV_errMsg("发送LIMS系统失败!返回值:"+result);
  2838. SqlSession.rollback();
  2839. return cro;
  2840. }
  2841. }catch(Exception e){
  2842. cro.setV_errCode(-1);
  2843. cro.setV_errMsg(e.getMessage());
  2844. return cro;
  2845. }
  2846. String resultlist =result.substring(8, 11);
  2847. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  2848. cro.setV_errCode(-1);
  2849. cro.setV_errMsg("发送LIMS系统失败!"+result);
  2850. SqlSession.rollback();
  2851. return cro;
  2852. }
  2853. if(resultlist.equals("200")){
  2854. //把所有的取样编号的委托 状态修改成已发送
  2855. String sdtime = "0";
  2856. for (String string3 : treeSetSpecimenNo) {
  2857. sql = "";
  2858. sql =" update QCM_JHY_SAMPLE_CONSIGN_D t set STATUS = '2',SEND_TIME=sysdate,"
  2859. + " CONSIGN_NO='"+consignNo+"', CONSIGN_NO_SEQ = '1', "
  2860. + " SEND_ID = '"+sendId+"',SEND_NAME = '"+sendName+"',t.PLINE_CODE_LIMS = '"+plineCodeLims+"' "
  2861. + " where t.SPECIMEN_NO ='"+string3+"' ";
  2862. mapper.updateJudgeStatus(sql.toString());
  2863. if(sdtime.equals("0")){
  2864. String sql2 = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  2865. + " set t.SAMPLE_DELIVERY_TIME = '"+sampleDeliveryTime+"' "
  2866. + " where t.SPECIMEN_NO = '"+string3+"' ";
  2867. mapper.UpdateQcmWt(sql2.toString());
  2868. sdtime = "1";
  2869. }
  2870. }
  2871. //合并表
  2872. sql = "";
  2873. sql =" update QCM_JHY_ZHB_PHYSICS t set t.SEND_LOG = '1' "
  2874. + " where t.SPECIMEN_NO ='"+specimenNo+"' and t.SEND_LOG <> '1' ";
  2875. mapper.updateJudgeStatus(sql.toString());
  2876. }
  2877. for (HashMap list : lists) {
  2878. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  2879. qjog.setOperate_name(sendName);
  2880. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  2881. qjog.setOperate_type("同轧批牌号合并发送");
  2882. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  2883. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  2884. qjog.setMemo(list.get("SPECIMEN_NO") == null ?"":list.get("SPECIMEN_NO").toString());
  2885. mapper.insertQcmJudgeOperateLog(qjog);
  2886. }
  2887. SqlSession.commit();
  2888. //全自动激光切割加工中心系统
  2889. /* if(LCplineCode.equals("HB1") || LCplineCode.equals("ZB1")){
  2890. if(LCtarDate.size()>=1){
  2891. String jgkg=QcmJhyJgKg(LCplineCode);
  2892. if("1".equals(jgkg)){
  2893. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  2894. String LCtar=LCtarDate.toString();
  2895. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  2896. }
  2897. }
  2898. }*/
  2899. }
  2900. cro.setV_errCode(1);
  2901. cro.setV_errMsg("发送成功");
  2902. } catch (Exception e) {
  2903. e.printStackTrace();
  2904. SqlSession.rollback();
  2905. cro.setV_errCode(-1);
  2906. cro.setV_errMsg("发送委托失败!"+e.getMessage());
  2907. return cro;
  2908. }finally {
  2909. SqlSession.close();
  2910. }
  2911. return cro;
  2912. }
  2913. //船板 同批 同厚度 TMCP和AR/CR交货状态 合并
  2914. public String tmcpAr(List<HashMap> tmcpArList,String sendId,String sendName,String sampleDeliveryTime){
  2915. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  2916. try {
  2917. String LCplineCode="LC";
  2918. StringBuffer sqlucomm = new StringBuffer();
  2919. String batchNo="";
  2920. String connSpecimenNo = "";
  2921. for (int i = 0; i < tmcpArList.size(); i++) {
  2922. HashMap obj=tmcpArList.get(i);
  2923. batchNo = (String)obj.get("BATCH_NO");
  2924. if ("".equals(connSpecimenNo)) {
  2925. connSpecimenNo="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2926. }else{
  2927. connSpecimenNo=connSpecimenNo+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2928. }
  2929. if (i !=tmcpArList.size()-1) {
  2930. connSpecimenNo=connSpecimenNo+",";
  2931. }
  2932. }
  2933. String connectSpno = "";//连接这一批的取样编号查询
  2934. String connectSpno2 = "";//连接这一批的取样编号(最低牌号)
  2935. //拿取能合并的所有取样编号
  2936. //,'IC009','IC006','IC007','IC002'
  2937. String sql="";
  2938. sql= "select * from (select t.SMP_NO,t.SPECIMEN_NO,t.HEAT_NO,t.BATCH_NO,t.INSPECTION_LOT,t.FREQ_CODE,t.FREQ_NAME,"
  2939. + " t.MATERIAL_NO,t.SEND_MEMO,t.SMP_TYPE_CODE,t.SMP_TYPE_NAME,t.CONSIGN_NO,t.CONSIGN_NO_SEQ,t.TEST_QTY,t.SMP_QTY,"
  2940. + " t.SMP_LOCATION,t.BOARD_NO,t.QUOTE_CONSIGN_NO,t.OLD_CONSIGN_NO,t.PLINE_CODE,t.PLINE_NAME,t.CHEM_ITEM,"
  2941. + " t.SOURCE,t.PRODUCT_CNT,t.MEMO, r.STEEL_CODE,r.STEEL_NAME ,r.THICK,r.WIDTH ,r.LENGTH ,r.DESIGN_KEY,"
  2942. + " m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,t.PROCESS_NOS, "
  2943. + " r.std_code, QCM_SPECFLAG(r.STEEL_CODE, r.THICK, r.std_code, m.CERT_INST_NAME) qcmSpecflag "
  2944. +" from qcm_jhy_sample_consign_d t,qcm_jhy_sample_consign_m m, qcm_jhy_sample_r_ord r "
  2945. +" where t.smp_no = m.smp_no "
  2946. +" and t.smp_no = r.smp_no "
  2947. +" and t.freq_code <> 'D' "
  2948. +" and t.batch_no = '"+batchNo+"' "
  2949. +" and t.smp_type_code = '0' "
  2950. +" and t.status = '0' "
  2951. +" and r.std_code not like '%ASTM%' "
  2952. +" and r.std_code not like '%ASME%' "
  2953. +" and r.Cert_Inst_Code in ('5000','IC010','IC003','IC004','IC001')"
  2954. + " and m.SMP_CATG = 'B' "
  2955. + " and t.SPECIMEN_NO in ("+connSpecimenNo+") "
  2956. + " order by r.STEEL_CODE) t where t.qcmSpecflag in ('1','0') ";
  2957. List<HashMap> lists=mapper.query(sql.toString());
  2958. if (lists==null || lists.size()<=0) {
  2959. return "TMCP/AR/CR合并未找到相应的委托";
  2960. }
  2961. String tresteelCode = "";
  2962. TreeSet<String> TREEsteelCode=new TreeSet<String>();//牌号
  2963. for (int i = 0; i < lists.size(); i++) {
  2964. HashMap obj=lists.get(i);
  2965. TREEsteelCode.add((String)obj.get("STEEL_CODE"));//牌号
  2966. //能合并的取样编号
  2967. if ("".equals(connectSpno)) {
  2968. connectSpno="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2969. connectSpno2="'"+(String)obj.get("SPECIMEN_NO")+"'";
  2970. }else{
  2971. connectSpno=connectSpno+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2972. connectSpno2=connectSpno2+"'"+(String)obj.get("SPECIMEN_NO")+"'";
  2973. }
  2974. if (i !=lists.size()-1) {
  2975. connectSpno=connectSpno+",";
  2976. connectSpno2=connectSpno2+";";
  2977. }
  2978. }
  2979. //牌号合并
  2980. for (String string2 : TREEsteelCode) {//发给lims
  2981. String strSteelCode =string2;
  2982. if(StringUtils.isBlank(tresteelCode)){//是否为空牌号
  2983. tresteelCode = strSteelCode;
  2984. }else{
  2985. tresteelCode = tresteelCode +","+strSteelCode;
  2986. }
  2987. }
  2988. //System.out.println("合并牌号:"+tresteelCode);
  2989. TreeSet<String> treeSetSpecimenNo=new TreeSet<String>();//取样编号
  2990. //美标牌号(指标准类别中含ASTM、ASME)不能跟其他标准牌号进行合并。
  2991. //查询当前轧批的所有取样编号下的项目(取样编号)
  2992. sql="";
  2993. sql = "select i.* from QCM_JHY_SAMPLE_CONSIGN_D_ITEM i "
  2994. +" where i.specimen_no in ( "+connectSpno+" ) "
  2995. + " order by i.phy_code_l asc, i.phy_code_s asc, i.item_code_d asc, i.PHY_CODE_M desc ";//注意:排序按 升序 冲击温度 横向一定要到纵向之前
  2996. List<HashMap> hmap=mapper.query(sql.toString());
  2997. if(hmap==null && hmap.size()<=0 ){
  2998. return "TMCP/AR/CR合并未找到相应项目";
  2999. }
  3000. //判断有没有追加冲击试验 PHY_CODE_M:1 20230803
  3001. String phyMT="0";
  3002. sql="";
  3003. sql = "select i.* from QCM_JHY_SAMPLE_CONSIGN_D_ITEM i "
  3004. +" where i.specimen_no in ( "+connectSpno+" ) and (i.QUOTE_SPECIMEN_NO is null or i.QUOTE_SPECIMEN_NO='')"
  3005. +" and i.PHY_CODE_L='HC' and PHY_CODE_M='1' ";
  3006. List<HashMap> hmHC=mapper.query(sql.toString());
  3007. if(hmHC!=null && hmHC.size()>=1 ){
  3008. phyMT="1";//有追加冲击试验
  3009. }
  3010. sql ="";
  3011. sql = "select nvl(max(to_number(substr(SPECIMEN_NO,-2))),0) NUMNO from QCM_JHY_ZHB_PHYSICS t where t.SPECIMEN_NO like 'ZHB"+batchNo+"TMCPAR%'";
  3012. List<HashMap> mapnumno=mapper.query(sql.toString());
  3013. BigDecimal hmap1 = (BigDecimal) mapnumno.get(0).get("NUMNO");
  3014. Integer hmap3 = Integer.parseInt(hmap1.toString());
  3015. hmap3++;
  3016. //ZHB+轧批号+交货状态+两位数
  3017. String specimenNo = "ZHB"+batchNo+"TMCPAR"+String.format("%02d", hmap3);//组合取样材料号
  3018. for (HashMap hashMap : hmap) {//当前所有项目明细
  3019. treeSetSpecimenNo.add((String)hashMap.get("SPECIMEN_NO"));//获取当前所有参于的取样编号
  3020. //代码
  3021. String phyCodeL = (String) hashMap.get("PHY_CODE_L");//材质检验大项代码
  3022. String phyCodeM = (String) hashMap.get("PHY_CODE_M");//试样组代码
  3023. String phyCodeS = (String) hashMap.get("PHY_CODE_S");//材质检验项目代码
  3024. String itemCodeD = (String) hashMap.get("ITEM_CODE_D");//试验方向代码
  3025. String itemCodeT = (String) hashMap.get("ITEM_CODE_T");//试验温度代码 试验温度代码 冲击 被引用
  3026. String itemCodeS = (String) hashMap.get("ITEM_CODE_S");//试样尺寸代码
  3027. String itemCodeL = (String) hashMap.get("ITEM_CODE_L");//试验位置代码
  3028. //名称
  3029. String phyNameL = (String) hashMap.get("PHY_NAME_L");//材质检验大项
  3030. String phyNameM = (String) hashMap.get("PHY_NAME_M");//试样组
  3031. String phyNameS = (String) hashMap.get("PHY_NAME_S");//材质检验项目
  3032. String itemNameD = (String) hashMap.get("ITEM_NAME_D");//试验方向
  3033. String itemNameT = (String) hashMap.get("ITEM_NAME_T");//试验温度
  3034. String itemNameS = (String) hashMap.get("ITEM_NAME_S");//试样尺寸
  3035. String itemDescL = (String) hashMap.get("ITEM_DESC_L");//试验位置
  3036. String newItem=phyCodeL+"-"+phyCodeM+"-"+phyCodeS;
  3037. newItem=newItem+"-"+(itemCodeD!=null?itemCodeD:"null");
  3038. newItem=newItem+"-"+(itemCodeT!=null?itemCodeT:"null");
  3039. newItem=newItem+"-"+(itemCodeS!=null?itemCodeS:"null");
  3040. //newItem=newItem+"-"+(itemCodeL!=null?itemCodeL:"null");
  3041. String STDMIN_SIGN = (String) hashMap.get("STDMIN_SIGN");//标准范围下限符号
  3042. String STDMIN = (String) hashMap.get("STDMIN");//标准范围下限
  3043. String STDMAX_SIGN = (String) hashMap.get("STDMAX_SIGN");//标准范围上限符号
  3044. String STDMAX = (String) hashMap.get("STDMAX");//标准范围上限
  3045. STDMIN_SIGN = (STDMIN_SIGN!=null?STDMIN_SIGN:"");//标准范围下限符号
  3046. STDMIN = (STDMIN!=null?STDMIN:"");//标准范围下限
  3047. STDMAX_SIGN = (STDMAX_SIGN!=null?STDMAX_SIGN:"");//标准范围上限符号
  3048. STDMAX = (STDMAX!=null?STDMAX:"");//标准范围上限
  3049. //判断是否是冲击试验
  3050. if(phyCodeS.equals("C01") || phyCodeS.equals("C02")){
  3051. //有追加冲击试验 20230803
  3052. if(phyMT.equals("1")){
  3053. sql ="";
  3054. //材质检验大项代码 HC 材质检验项目C01/C02 试样组0/1(不要) 试验温度
  3055. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  3056. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.ITEM_CODE_T='"+itemCodeT+"'"
  3057. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  3058. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  3059. List<HashMap> zhbmap=mapper.query(sql.toString());
  3060. if(zhbmap==null || zhbmap.size()<=0 ){
  3061. //查询当前合并取样编号的最大序号
  3062. Integer seq=0;
  3063. sql ="";
  3064. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  3065. List<HashMap> seqmap=mapper.query(sql.toString());
  3066. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  3067. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  3068. String seqs = big.toString();
  3069. Integer seqint = Integer.parseInt(seqs);
  3070. seqint++;
  3071. seq=seqint;
  3072. }
  3073. sql="";
  3074. sql = "insert into qcm_jhy_zhb_physics "
  3075. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3076. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  3077. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3078. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,'有追加冲击试验',quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  3079. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  3080. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  3081. mapper.insert(sql);
  3082. }
  3083. continue;
  3084. }
  3085. sql ="";
  3086. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  3087. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  3088. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  3089. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  3090. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  3091. List<HashMap> zhbmap=mapper.query(sql.toString());
  3092. //没有查到说明合并中没有这一项
  3093. if(zhbmap==null || zhbmap.size()<=0 ){
  3094. //查询当前合并取样编号的最大序号
  3095. Integer seq=0;
  3096. sql ="";
  3097. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  3098. List<HashMap> seqmap=mapper.query(sql.toString());
  3099. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  3100. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  3101. String seqs = big.toString();
  3102. Integer seqint = Integer.parseInt(seqs);
  3103. seqint++;
  3104. seq=seqint;
  3105. }
  3106. sql="";
  3107. sql = "insert into qcm_jhy_zhb_physics "
  3108. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3109. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  3110. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3111. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  3112. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  3113. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  3114. mapper.insert(sql);
  3115. }else{
  3116. sql ="";
  3117. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  3118. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  3119. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  3120. + " and t.PHY_CODE_S ='"+phyCodeS+"' "
  3121. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  3122. List<HashMap> hmitemCode=mapper.query(sql.toString());
  3123. TreeSet<String> tritemCode=new TreeSet<String>();//试验方向代码 A 横向
  3124. TreeSet<String> tritemCode2=new TreeSet<String>();//试验方向代码 B 纵向
  3125. for (int i = 0; i < hmitemCode.size(); i++) {
  3126. if(hmitemCode.get(i).get("ITEM_CODE_D").toString().equals("A")){
  3127. tritemCode.add((String)hmitemCode.get(i).get("ITEM_CODE_D"));
  3128. }else if(hmitemCode.get(i).get("ITEM_CODE_D").toString().equals("B")){
  3129. tritemCode2.add((String)hmitemCode.get(i).get("ITEM_CODE_D"));
  3130. }
  3131. }
  3132. if(itemCodeD.equals("A")){//横向冲击可以替代纵向冲击
  3133. String itemCodeT2 = (String) hmitemCode.get(0).get("ITEM_CODE_T");//试验温度代码
  3134. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据
  3135. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据
  3136. if(co1t < co2t){ // -40 < -20 < 0 < 20 给lims下发最低的温度
  3137. sql = "";
  3138. sql =" update QCM_JHY_ZHB_PHYSICS t "
  3139. + " set t.ITEM_CODE_D = '"+itemCodeD+"', t.ITEM_NAME_D = '"+itemNameD+"', "
  3140. + " t.ITEM_CODE_T = '"+itemCodeT+"',t.ITEM_NAME_T = '"+itemNameT+"', "
  3141. + " t.ITEM_CODE_S = '"+itemCodeS+"',t.ITEM_NAME_S = '"+itemNameS+"', "
  3142. + " t.ITEM_CODE_L = '"+itemCodeL+"',t.ITEM_DESC_L = '"+itemDescL+"', "
  3143. + " t.PHY_GROUP_CODE='"+newItem+"',"
  3144. + " t.STDMIN_SIGN='"+STDMIN_SIGN+"', t.STDMIN='"+STDMIN+"', t.STDMAX_SIGN='"+STDMAX_SIGN+"', t.STDMAX='"+STDMAX+"' "
  3145. +" where t.specimen_no = '"+specimenNo+"' "
  3146. +" and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  3147. +" and t.PHY_CODE_S ='"+phyCodeS+"' ";
  3148. mapper.updateJudgeStatus(sql.toString());
  3149. }
  3150. }else if(itemCodeD.equals("B")){//纵向不能替代横向 如果纵向大于横向 从新加入一条纵向冲击
  3151. //判断横向
  3152. if(tritemCode.size()<=1 && tritemCode2.size()<=0){//没有纵向
  3153. String itemCodeT2 = (String) hmitemCode.get(0).get("ITEM_CODE_T");//试验温度代码
  3154. String itemCodeD2 = (String) hmitemCode.get(0).get("ITEM_CODE_D");//试验方向代码 A 横向0 -20 B 纵向 0 -20
  3155. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据 纵向温度
  3156. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据 横向温度
  3157. if(co1t < co2t){//如果纵向温度低于横向温度 插入
  3158. //查询当前合并取样编号的最大序号
  3159. Integer seq=0;
  3160. sql ="";
  3161. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  3162. List<HashMap> seqmap=mapper.query(sql.toString());
  3163. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  3164. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  3165. String seqs = big.toString();
  3166. Integer seqint = Integer.parseInt(seqs);
  3167. seqint++;
  3168. seq=seqint;
  3169. }
  3170. sql="";
  3171. sql = "insert into qcm_jhy_zhb_physics "
  3172. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3173. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  3174. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3175. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  3176. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  3177. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  3178. mapper.insert(sql);
  3179. }
  3180. }else {//到了这一步说明 合并中已经有了纵向的温度
  3181. sql ="";
  3182. //材质检验大项代码 HC 试样组0/1 材质检验项目C01/C02
  3183. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  3184. + " and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  3185. + " and t.PHY_CODE_S ='"+phyCodeS+"' and t.ITEM_CODE_D = 'B' "
  3186. + " order by t.phy_code_l,t.phy_code_s,t.item_code_d asc ";
  3187. List<HashMap> hmB=mapper.query(sql.toString());
  3188. String itemCodeT2 = (String) hmB.get(0).get("ITEM_CODE_T");//试验温度代码
  3189. Integer co1t= Integer.parseInt(itemCodeT);//被引用 当前循环的数据 纵向温度
  3190. Integer co2t= Integer.parseInt(itemCodeT2);//引用 在合并表中的数据 横向温度
  3191. if(co1t < co2t){ // -40 < -20 < 0 < 20 给lims下发最低的温度
  3192. sql = "";
  3193. sql =" update QCM_JHY_ZHB_PHYSICS t "
  3194. + " set t.ITEM_CODE_D = '"+itemCodeD+"', t.ITEM_NAME_D = '"+itemNameD+"', "
  3195. + " t.ITEM_CODE_T = '"+itemCodeT+"',t.ITEM_NAME_T = '"+itemNameT+"', "
  3196. + " t.ITEM_CODE_S = '"+itemCodeS+"',t.ITEM_NAME_S = '"+itemNameS+"', "
  3197. + " t.ITEM_CODE_L = '"+itemCodeL+"',t.ITEM_DESC_L = '"+itemDescL+"', "
  3198. + " t.PHY_GROUP_CODE='"+newItem+"',"
  3199. + " t.STDMIN_SIGN='"+STDMIN_SIGN+"', t.STDMIN='"+STDMIN+"', t.STDMAX_SIGN='"+STDMAX_SIGN+"', t.STDMAX='"+STDMAX+"' "
  3200. +" where t.specimen_no = '"+specimenNo+"' "
  3201. +" and t.PHY_CODE_L ='"+phyCodeL+"' and t.PHY_CODE_M='"+phyCodeM+"'"
  3202. +" and t.PHY_CODE_S ='"+phyCodeS+"' and t.ITEM_CODE_D = 'B' ";
  3203. mapper.updateJudgeStatus(sql.toString());
  3204. }
  3205. }
  3206. }
  3207. }
  3208. }else{
  3209. sql ="";
  3210. sql = "select t.* from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' "
  3211. + " and t.PHY_GROUP_CODE='"+newItem+"' ";
  3212. List<HashMap> zhbmap=mapper.query(sql.toString());
  3213. //没有查到说明合并中没有这一项
  3214. if(zhbmap==null || zhbmap.size()<=0 ){
  3215. //查询当前合并取样编号的最大序号
  3216. Integer seq=0;
  3217. sql ="";
  3218. sql = "select nvl(max(t.seq),0) seq from QCM_JHY_ZHB_PHYSICS t where t.specimen_no = '"+specimenNo+"' ";
  3219. List<HashMap> seqmap=mapper.query(sql.toString());
  3220. if(seqmap.get(0).get("SEQ")!=null && !"".equals(seqmap.get(0).get("SEQ"))){
  3221. BigDecimal big = (BigDecimal)seqmap.get(0).get("SEQ");
  3222. String seqs = big.toString();
  3223. Integer seqint = Integer.parseInt(seqs);
  3224. seqint++;
  3225. seq=seqint;
  3226. }
  3227. sql="";
  3228. sql = "insert into qcm_jhy_zhb_physics "
  3229. +" (specimen_no, seq, test_qty, phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3230. + " STDMIN,STDMAX_SIGN,STDMAX,group_seq,item_code_l, item_desc_l,ISJUDGE, JUDGE_BASIS,phy_unit, memo, quote_specimen_no, merge_name, merge_time, phy_group_code,SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO) "
  3231. +" select '"+specimenNo+"','"+seq+"',TEST_QTY,phy_code_l, phy_name_l, phy_code_m, phy_name_m, phy_code_s, phy_name_s, item_code_d, item_name_d, item_code_t, item_name_t, item_code_s, item_name_s, "
  3232. + " STDMIN,STDMAX_SIGN,STDMAX,GROUP_SEQ,item_code_l, item_desc_l,ISJUDGE,JUDGE_BASIS,phy_unit,memo,quote_specimen_no,'"+sendName+"',SYSDATE,'"+newItem+"',SMP_QTY,SPECL_FL,STDMIN_SIGN,ITEM_FLAG,STDMEMO "
  3233. + " from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  3234. + " where t.specimen_no = '"+hashMap.get("SPECIMEN_NO")+"' and t.seq = '"+hashMap.get("SEQ")+"' ";
  3235. mapper.insert(sql);
  3236. }
  3237. }
  3238. }
  3239. //修改所有的取样编号 合并标识
  3240. for (String string2 : treeSetSpecimenNo) {
  3241. sql = "";
  3242. sql =" update QCM_JHY_SAMPLE_CONSIGN_D t set t.ZHB_SPECIMEN_NO = '"+specimenNo+"' "
  3243. + " where t.SPECIMEN_NO ='"+string2+"' ";
  3244. mapper.updateJudgeStatus(sql.toString());
  3245. sql = "";
  3246. sql =" update QCM_JHY_SAMPLE_CONSIGN_D_ITEM t set t.ZHB_SPECIMEN_NO = '"+specimenNo+"' "
  3247. + " where t.SPECIMEN_NO ='"+string2+"' ";
  3248. mapper.updateJudgeStatus(sql.toString());
  3249. }
  3250. JSONArray tarDate=new JSONArray();
  3251. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  3252. Date date=new Date();
  3253. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3254. String dateString=simpleDateFormat.format(date);
  3255. //生成委托编号
  3256. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  3257. sqlucomm.setLength(0);
  3258. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  3259. HashMap map=mapper.queryOne(sqlucomm.toString());
  3260. BigDecimal count = BigDecimal.ZERO;
  3261. if( null != map.get("BIGSEQ")){
  3262. count=(BigDecimal)map.get("BIGSEQ");
  3263. }
  3264. if (count.compareTo(BigDecimal.ZERO)==1) {
  3265. count=count.add(BigDecimal.ONE);
  3266. }else{
  3267. count=BigDecimal.ONE;
  3268. }
  3269. consignNo=consignNo+String.format("%03d", count.intValue());
  3270. System.out.println("======="+count.intValue());
  3271. int seq=1;
  3272. String plineCodeLims = "";//中厚板送样产线,按送样时间确定
  3273. //lists.size()
  3274. for (int i = 0; i < 1; i++) {
  3275. HashMap obj=lists.get(i);
  3276. //中厚板送样产线
  3277. if(obj.get("PLINE_CODE").toString().equals("ZB1") || obj.get("PLINE_CODE").toString().equals("HB1")){
  3278. if(sampleDeliveryTime.contains("06:30:00") || sampleDeliveryTime.contains("10:30:00") ||
  3279. sampleDeliveryTime.contains("17:30:00") || sampleDeliveryTime.contains("20:30:00")){
  3280. plineCodeLims = "HB1";
  3281. }else if(sampleDeliveryTime.contains("03:00:00") || sampleDeliveryTime.contains("11:00:00") ||
  3282. sampleDeliveryTime.contains("15:00:00") || sampleDeliveryTime.contains("18:00:00") ||
  3283. sampleDeliveryTime.contains("21:00:00") || sampleDeliveryTime.contains("06:00:00") ){
  3284. plineCodeLims = "ZB1";
  3285. }
  3286. }
  3287. obj.put("PLINE_CODE_LIMS", plineCodeLims);
  3288. obj.put("SPECIMEN_NO", specimenNo);
  3289. obj.put("SEND_ID", sendId);
  3290. obj.put("SEND_NAME", sendName);//发送人
  3291. obj.put("CONSIGN_NO", consignNo);//委托编号
  3292. obj.put("CONSIGN_NO_SEQ", seq++);
  3293. obj.put("SEND_TIME", dateString);//发送时间
  3294. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  3295. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  3296. //目标json
  3297. JSONObject tarObj=new JSONObject();
  3298. //主表数据
  3299. createTarObj(tarObj,smpleD);
  3300. //发送序号 createSendSeq
  3301. String sendSeq=createSendSeq(tarObj.getString("plineCode").toString());//发送序号
  3302. //String sendQ="select to_number(substr('"+sendSeq+"', 8)) PRINT_SEQ from dual t ";
  3303. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  3304. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  3305. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();
  3306. if(tarObj.getString("plineCode").equals("ZB1")){
  3307. tarObj.put("printSeq", 'Z'+PRINT_SEQ);
  3308. PRINT_SEQ='Z'+PRINT_SEQ;
  3309. }else if(tarObj.getString("plineCode").equals("HB1")){
  3310. tarObj.put("printSeq", 'H'+PRINT_SEQ);
  3311. PRINT_SEQ='H'+PRINT_SEQ;
  3312. }
  3313. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"' "
  3314. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and ZHB_SPECIMEN_NO = '"+specimenNo+"' ";
  3315. mapper.updateJudgeStatus(qcmSendSeq.toString());
  3316. tarObj.put("sendSeq", sendSeq);
  3317. tarObj.put("CREATE_ID", sendId);
  3318. tarObj.put("CREATE_NAME", sendName);
  3319. tarObj.put("sampleDeliveryTime", sampleDeliveryTime);//送样时间点
  3320. tarObj.put("steelCode",tresteelCode);//牌号合并
  3321. tarObj.put("steelName",tresteelCode);//牌号合并
  3322. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  3323. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  3324. //热处理号
  3325. tarObj.put("heatTreatment", obj.get("PROCESS_NOS"));
  3326. //传给lims的成分标识
  3327. String componentsql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t,QCM_JHY_SAMPLE_CONSIGN_M m "
  3328. +" where t.smp_no = m.smp_no and m.SMP_CATG = 'A' and t.batch_no = '"+smpleD.getString("BATCH_NO")+"' ";
  3329. List<HashMap> componentLog=mapper.query(componentsql.toString());
  3330. if(componentLog!=null && componentLog.size()>=1){
  3331. tarObj.put("componentLog", '1');//1代表有成分
  3332. }else{
  3333. tarObj.put("componentLog", '0');//0代表无成分
  3334. }
  3335. if ("5000".equals(obj.get("CERT_INST_CODE"))) {
  3336. tarObj.put("type", "0");
  3337. }else{
  3338. tarObj.put("type", "1");
  3339. }
  3340. if ("B".equals(obj.get("SMP_CATG"))) {
  3341. //材质
  3342. sqlucomm.setLength(0);
  3343. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  3344. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  3345. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.MEMO,T.ITEM_CODE_L,"
  3346. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.SPECL_FL,T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,"
  3347. + " T.STDMEMO from QCM_JHY_ZHB_PHYSICS T "
  3348. + " WHERE T.SPECIMEN_NO='"+specimenNo+"' and t.VAL1 is null and t.SEND_LOG <> '1' ");
  3349. List<HashMap> items=mapper.query(sqlucomm.toString());
  3350. if (items!=null && items.size()>0) {
  3351. JSONArray arrayItem=new JSONArray();
  3352. for(int j = 0 ;j < items.size() ; j++){
  3353. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  3354. JSONObject tarItem=new JSONObject();
  3355. //子表数据
  3356. createItem(tarItem,oldItem);
  3357. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  3358. tarItem.put("tsFlag", "1");//探伤
  3359. }else{
  3360. tarItem.put("tsFlag", "0");//非探伤
  3361. }
  3362. arrayItem.add(tarItem);
  3363. }
  3364. tarObj.put("items", arrayItem);
  3365. }
  3366. }else{
  3367. //成分
  3368. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  3369. tarObj.putAll(chemItem);
  3370. }
  3371. tarDate.add(tarObj);
  3372. HashMap<String,String> hm = new HashMap<String,String>();
  3373. hm.put("SPECIMEN_NO", specimenNo);
  3374. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  3375. hm.put("PLINE_CODE", "ZHB");
  3376. //全自动激光切割加工中心系统
  3377. if(LCplineCode.equals("HB1")){
  3378. String lcThick = obj.get("THICK").toString();
  3379. double lcThick2 = Double.parseDouble(lcThick);
  3380. if(lcThick2<=25){
  3381. LCtarDate.add(tarObj);
  3382. String strjg=qcmJg(hm);
  3383. mapper.insert(strjg);
  3384. }
  3385. }else if(LCplineCode.equals("ZB1")){
  3386. LCtarDate.add(tarObj);
  3387. String strjg=qcmJg(hm);
  3388. mapper.insert(strjg);
  3389. }
  3390. }
  3391. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  3392. String tar=tarDate.toString();
  3393. String result = "";//调用url
  3394. try{
  3395. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  3396. if (result == null ||result.equals("null") || result.equals("")) {
  3397. return "TMCP/AR/CR合并LIMS返回:"+result;
  3398. }
  3399. }catch(Exception e){
  3400. return "TMCP/AR/CR合并LIMS返回:"+result;
  3401. }
  3402. String resultlist =result.substring(8, 11);
  3403. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  3404. return "TMCP/AR/CR合并LIMS返回:"+result;
  3405. }
  3406. if(resultlist.equals("200")){
  3407. //把所有的取样编号的委托 状态修改成已发送
  3408. String sdtime = "0";
  3409. for (String string3 : treeSetSpecimenNo) {
  3410. sql = "";
  3411. sql =" update QCM_JHY_SAMPLE_CONSIGN_D t set STATUS = '2',SEND_TIME=sysdate,"
  3412. + " CONSIGN_NO='"+consignNo+"', CONSIGN_NO_SEQ = '1', "
  3413. + " SEND_ID = '"+sendId+"',SEND_NAME = '"+sendName+"',t.PLINE_CODE_LIMS='"+plineCodeLims+"' "
  3414. + " where t.SPECIMEN_NO ='"+string3+"' ";
  3415. mapper.updateJudgeStatus(sql.toString());
  3416. if(sdtime.equals("0")){
  3417. String sql2 = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  3418. + " set t.SAMPLE_DELIVERY_TIME = '"+sampleDeliveryTime+"' "
  3419. + " where t.SPECIMEN_NO = '"+string3+"' ";
  3420. mapper.UpdateQcmWt(sql2.toString());
  3421. sdtime = "1";
  3422. }
  3423. }
  3424. //合并表
  3425. sql = "";
  3426. sql =" update QCM_JHY_ZHB_PHYSICS t set t.SEND_LOG = '1' "
  3427. + " where t.SPECIMEN_NO ='"+specimenNo+"' and t.SEND_LOG <> '1' ";
  3428. mapper.updateJudgeStatus(sql.toString());
  3429. }
  3430. SqlSession.commit();
  3431. //全自动激光切割加工中心系统
  3432. /* if(LCplineCode.equals("HB1") || LCplineCode.equals("ZB1")){
  3433. if(LCtarDate.size()>=1){
  3434. String jgkg=QcmJhyJgKg(LCplineCode);
  3435. if("1".equals(jgkg)){
  3436. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  3437. String LCtar=LCtarDate.toString();
  3438. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  3439. }
  3440. }
  3441. }*/
  3442. } catch (Exception e) {
  3443. e.printStackTrace();
  3444. SqlSession.rollback();
  3445. return "TMCP/AR合并"+e.getMessage();
  3446. }/*finally {
  3447. SqlSession.close();
  3448. }*/
  3449. return "200";
  3450. }
  3451. /**
  3452. * 项目转换
  3453. * @param tarItem
  3454. * @param oldItem
  3455. */
  3456. private void createItem(JSONObject tarItem, JSONObject oldItem) {
  3457. // TODO Auto-generated method stub
  3458. tarItem.put("specimenNo", oldItem.getString("SPECIMEN_NO"));
  3459. tarItem.put("seq", oldItem.getInteger("SEQ"));
  3460. tarItem.put("phyCodeL", oldItem.getString("PHY_CODE_L"));
  3461. tarItem.put("phyNameL", oldItem.getString("PHY_NAME_L"));
  3462. tarItem.put("phyCodeM", oldItem.getString("PHY_CODE_M"));
  3463. tarItem.put("phyNameM", oldItem.getString("PHY_NAME_M"));
  3464. tarItem.put("phyCodeS", oldItem.getString("PHY_CODE_S"));
  3465. tarItem.put("phyNameS", oldItem.getString("PHY_NAME_S"));
  3466. tarItem.put("itemCodeD", oldItem.getString("ITEM_CODE_D"));
  3467. tarItem.put("itemNameD", oldItem.getString("ITEM_NAME_D"));
  3468. tarItem.put("itemCodeT", oldItem.getString("ITEM_CODE_T"));
  3469. tarItem.put("itemNameT", oldItem.getString("ITEM_NAME_T"));
  3470. tarItem.put("itemCodeS", oldItem.getString("ITEM_CODE_S"));
  3471. tarItem.put("itemNameS", oldItem.getString("ITEM_NAME_S"));
  3472. tarItem.put("itemCodeL", oldItem.getString("ITEM_CODE_L"));
  3473. tarItem.put("itemNameL", oldItem.getString("ITEM_DESC_L"));
  3474. tarItem.put("groupSeq", oldItem.getString("GROUP_SEQ"));
  3475. tarItem.put("memo", oldItem.getString("MEMO"));
  3476. tarItem.put("judgeBasis", oldItem.getString("JUDGE_BASIS"));
  3477. tarItem.put("unti", oldItem.getString("PHY_UNIT"));
  3478. tarItem.put("testQty", oldItem.getString("TEST_QTY"));
  3479. tarItem.put("smpQty", oldItem.getString("SMP_QTY"));
  3480. String sql = "select t.* from qcm_ord_design_std_pic t "
  3481. +" where t.design_key in ( "
  3482. +" select r.design_key from qcm_jhy_sample_r_ord r,qcm_jhy_sample_consign_d d "
  3483. +" where r.smp_no = d.smp_no "
  3484. +" and d.specimen_no = '"+oldItem.getString("SPECIMEN_NO")+"') "
  3485. +" and PHY_CODE_L = '"+oldItem.getString("PHY_CODE_L")+"' "
  3486. +" and PHY_CODE_M = '"+oldItem.getString("PHY_CODE_M")+"' "
  3487. +" and PHY_CODE_S = '"+oldItem.getString("PHY_CODE_S")+"' "
  3488. +" and SPECL_FL = '2' and rownum = 1 ";
  3489. List<HashMap> items=mapper.query(sql.toString());
  3490. if(items!=null && items.size()>=1){
  3491. tarItem.put("stdminSign", items.get(0).get("STDMIN_SIGN"));
  3492. tarItem.put("stdmin", items.get(0).get("STDMIN"));
  3493. tarItem.put("stdmaxSign", items.get(0).get("STDMAX_SIGN"));
  3494. tarItem.put("stdmax", items.get(0).get("STDMAX"));
  3495. }else{
  3496. tarItem.put("stdminSign", oldItem.getString("STDMIN_SIGN"));
  3497. tarItem.put("stdmin", oldItem.getString("STDMIN"));
  3498. tarItem.put("stdmaxSign", oldItem.getString("STDMAX_SIGN"));
  3499. tarItem.put("stdmax", oldItem.getString("STDMAX"));
  3500. }
  3501. // tarItem.put("createTime", oldItem.getString("ITEM_NAME_S"));
  3502. // tarItem.put("createName", oldItem.getString("ITEM_NAME_S"));
  3503. String SqlStdMemo = "select t.* from qcm_ord_design_std_pic t "
  3504. +" where t.design_key in ( "
  3505. +" select r.design_key from qcm_jhy_sample_r_ord r,qcm_jhy_sample_consign_d d "
  3506. +" where r.smp_no = d.smp_no "
  3507. +" and d.specimen_no = '"+oldItem.getString("SPECIMEN_NO")+"') "
  3508. +" and PHY_CODE_L = '"+oldItem.getString("PHY_CODE_L")+"' "
  3509. +" and PHY_CODE_M = '"+oldItem.getString("PHY_CODE_M")+"' "
  3510. +" and PHY_CODE_S = '"+oldItem.getString("PHY_CODE_S")+"' "
  3511. +" and SPECL_FL = '"+oldItem.getString("SPECL_FL")+"' and rownum = 1 ";
  3512. List<HashMap> hmStdMemo=mapper.query(SqlStdMemo.toString());
  3513. if(hmStdMemo!=null && hmStdMemo.size()>=1){
  3514. tarItem.put("STDMEMO", hmStdMemo.get(0).get("STDMEMO"));
  3515. }else{
  3516. tarItem.put("STDMEMO", oldItem.getString("STDMEMO"));
  3517. }
  3518. }
  3519. /**
  3520. * 创建目标对象
  3521. * @param tarObj
  3522. * @param obj
  3523. */
  3524. private void createTarObj(JSONObject tarObj, JSONObject obj) {
  3525. String yzysmpTypeCode = "";
  3526. // TODO Auto-generated method stub
  3527. tarObj.put("smpTage", obj.getString("SMP_CATG"));
  3528. tarObj.put("smpNo", obj.getString("SMP_NO"));
  3529. tarObj.put("specimenNo", obj.getString("SPECIMEN_NO"));
  3530. tarObj.put("heatNo", obj.getString("HEAT_NO"));
  3531. tarObj.put("batchNo", obj.getString("BATCH_NO"));
  3532. tarObj.put("inspectionLot", obj.getString("INSPECTION_LOT"));
  3533. tarObj.put("freqCode", obj.getString("FREQ_CODE"));
  3534. tarObj.put("freqName", obj.getString("FREQ_NAME"));
  3535. tarObj.put("materialNo", obj.getString("MATERIAL_NO"));
  3536. if ("0".equals(obj.getString("SMP_TYPE_CODE"))) {
  3537. String sql = "select case "
  3538. +" when t.SMP_TYPE_CODE = '0' then "
  3539. +" case "
  3540. +" when t2.CERT_INST_CODE in ('IC003','IC004', 'IC001', 'IC010', '5000') then "
  3541. +" t.SMP_TYPE_NAME "
  3542. +" else "
  3543. +" '认证样' "
  3544. +" end "
  3545. +" else "
  3546. +" t.SMP_TYPE_NAME "
  3547. +" end SMP_TYPE_NAME "
  3548. +" from QCM_JHY_SAMPLE_CONSIGN_D t "
  3549. +" inner join QCM_JHY_SAMPLE_CONSIGN_M t2 "
  3550. +" on t.SMP_NO = t2.SMP_NO "
  3551. +" where t.specimen_no = '"+obj.getString("SPECIMEN_NO")+"' and rownum <= 1";
  3552. List<HashMap> hMap=mapper.query(sql.toString());
  3553. if (hMap!=null || hMap.size()>0) {
  3554. for (HashMap hm : hMap) {
  3555. yzysmpTypeCode = (String)hm.get("SMP_TYPE_NAME");
  3556. }
  3557. }
  3558. if(yzysmpTypeCode.equals("认证样")){
  3559. tarObj.put("smpTypeCode", "certifiedSampleTask");
  3560. }else{
  3561. tarObj.put("smpTypeCode", "routineSampleTask");
  3562. }
  3563. }else if ("1".equals(obj.getString("SMP_TYPE_CODE"))){
  3564. tarObj.put("smpTypeCode", "reviewSampleTask");
  3565. }else{
  3566. tarObj.put("smpTypeCode", "coilSamplingTask");
  3567. }
  3568. if(yzysmpTypeCode.equals("认证样")){
  3569. tarObj.put("smpTypeName", "认证样");
  3570. }else{
  3571. tarObj.put("smpTypeName", obj.getString("SMP_TYPE_NAME"));
  3572. }
  3573. tarObj.put("smpTage", obj.getString("SMP_CATG"));
  3574. tarObj.put("smpLocation", obj.getString("SMP_LOCATION"));
  3575. tarObj.put("boardNo", obj.getString("BOARD_NO"));
  3576. //中厚板 正火前
  3577. if("ZB1".equals(obj.getString("PLINE_CODE")) || "HB1".equals(obj.getString("PLINE_CODE")) ){
  3578. /* String sqlItem = "select GET_ZHB1_PLINE_CODE('"+obj.getString("MATERIAL_NO")+"','"+obj.getString("PLINE_CODE")+"') PLINE_CODE from dual";
  3579. List<HashMap> vhchm=mapper.query(sqlItem.toString());
  3580. if(vhchm!=null && vhchm.size()>=1){
  3581. tarObj.put("plineCode", vhchm.get(0).get("PLINE_CODE").toString());
  3582. }else{
  3583. tarObj.put("plineCode", obj.getString("PLINE_CODE"));
  3584. }*/
  3585. if(StringUtils.isNotBlank(obj.getString("PLINE_CODE_LIMS").toString())){
  3586. if(obj.getString("PLINE_CODE_LIMS").equals("ZB1")){
  3587. tarObj.put("plineCode", "ZB1");
  3588. tarObj.put("plineName", "中板线");
  3589. }else if(obj.getString("PLINE_CODE_LIMS").equals("HB1")){
  3590. tarObj.put("plineCode", "HB1");
  3591. tarObj.put("plineName", "厚板线");
  3592. }
  3593. }else{
  3594. tarObj.put("plineCode", obj.getString("PLINE_CODE"));
  3595. tarObj.put("plineName", obj.getString("PLINE_NAME"));
  3596. }
  3597. }else{
  3598. tarObj.put("plineCode", obj.getString("PLINE_CODE"));
  3599. tarObj.put("plineName", obj.getString("PLINE_NAME"));
  3600. }
  3601. tarObj.put("status", obj.getString("STATUS"));
  3602. tarObj.put("thick", obj.getString("THICK"));
  3603. tarObj.put("width", obj.getString("WIDTH"));
  3604. tarObj.put("length", obj.getString("LENGTH"));
  3605. tarObj.put("sendName", obj.getString("SEND_NAME"));
  3606. tarObj.put("sendTime", obj.getString("SEND_TIME"));
  3607. tarObj.put("sendId", obj.getString("SEND_ID"));
  3608. tarObj.put("consignNo", obj.getString("CONSIGN_NO"));
  3609. tarObj.put("consignNoSeq", obj.getIntValue("CONSIGN_NO_SEQ"));
  3610. tarObj.put("productCnt", obj.getString("PRODUCT_CNT"));
  3611. //tarObj.put("checkMemo", obj.getString("MEMO"));
  3612. tarObj.put("orderNumber", obj.getString("DESIGN_KEY"));
  3613. tarObj.put("orderNotes", obj.getString("MEMO"));
  3614. tarObj.put("steelCode", obj.getString("STEEL_CODE"));
  3615. tarObj.put("steelName", obj.getString("STEEL_NAME"));
  3616. tarObj.put("sendMemo", obj.getString("SEND_MEMO"));
  3617. if ("A".equals(obj.getString("SMP_CATG"))) {
  3618. tarObj.put("testQty", obj.getString("TEST_QTY"));
  3619. tarObj.put("smpQty", obj.getString("SMP_QTY"));
  3620. }
  3621. }
  3622. /**
  3623. * 发送Http Post请求 发送LIMS委托接口*/
  3624. public static String httpURLPOSTCaseNew(String methodUrl,String data) {
  3625. HttpURLConnection connection = null;
  3626. PrintWriter pw = null;
  3627. BufferedReader reader = null;
  3628. String line = "";
  3629. StringBuilder result = new StringBuilder();
  3630. try {
  3631. URL url = new URL(methodUrl);
  3632. // data= URLEncoder.encode(URLEncoder.encode(data,"UTF-8"),"UTF-8");
  3633. data= URLEncoder.encode(data,"UTF-8") ;
  3634. connection = (HttpURLConnection)url.openConnection();// 根据URL生成HttpURLConnection
  3635. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  3636. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  3637. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  3638. connection.setUseCaches(false);// post请求不能使用缓存设为false
  3639. connection.setConnectTimeout(10000);// 连接主机的超时时间
  3640. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  3641. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  3642. connection.setRequestProperty("accept", "*/*");
  3643. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  3644. connection.setRequestProperty("charset", "utf-8");
  3645. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  3646. connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  3647. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  3648. pw = new PrintWriter(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
  3649. pw.write("data="+data);//json数据
  3650. pw.flush();
  3651. pw.close();
  3652. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  3653. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  3654. // 循环读取流
  3655. while (null != (line = reader.readLine())) {
  3656. result.append(line);
  3657. }
  3658. reader.close();
  3659. }
  3660. } catch (IOException e) {
  3661. e.printStackTrace();
  3662. try {
  3663. throw new Exception("发送LIMS系统失败,具体原因为["+e.getMessage()+"]");
  3664. } catch (Exception e1) {
  3665. // TODO Auto-generated catch block
  3666. e1.printStackTrace();
  3667. }
  3668. } finally {
  3669. connection.disconnect();
  3670. }
  3671. return result.toString();
  3672. }
  3673. /**
  3674. * 发送Http Post请求 撤销LIMS委托接口
  3675. * @throws Exception */
  3676. public String httpURLPOSTCase(String methodUrl,String data) throws Exception {
  3677. HttpURLConnection connection = null;
  3678. PrintWriter pw = null;
  3679. BufferedReader reader = null;
  3680. String line = "";
  3681. StringBuilder result = new StringBuilder();
  3682. try {
  3683. URL url = new URL(methodUrl);
  3684. connection = (HttpURLConnection)url.openConnection();// 根据URL生成HttpURLConnection
  3685. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  3686. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  3687. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  3688. connection.setUseCaches(false);// post请求不能使用缓存设为false
  3689. connection.setConnectTimeout(10000);// 连接主机的超时时间
  3690. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  3691. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  3692. connection.setRequestProperty("accept", "*/*");
  3693. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  3694. connection.setRequestProperty("charset", "utf-8");//utf-8 GBK
  3695. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//; charset=utf-8
  3696. //connection.setRequestProperty("Content-Type", "application/json");//;charset=utf-8
  3697. connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  3698. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  3699. // pw = new PrintWriter(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
  3700. //pw.write("data="+data);//json数据
  3701. // pw.flush();
  3702. //pw.close();
  3703. OutputStream outputstream = connection.getOutputStream();
  3704. String jsonStr = "data="+data;
  3705. //System.out.println("=========:JSON:"+jsonStr.toString());
  3706. outputstream.write(jsonStr.getBytes("UTF-8"));
  3707. /* String jsonStr = data;
  3708. System.out.println("=========:JSON:"+jsonStr.toString());
  3709. outputstream.write(jsonStr.getBytes("UTF-8"));*/
  3710. outputstream.flush();
  3711. outputstream.close();
  3712. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  3713. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  3714. // 循环读取流
  3715. while (null != (line = reader.readLine())) {
  3716. result.append(line);
  3717. }
  3718. reader.close();
  3719. }
  3720. } catch (IOException e) {
  3721. e.printStackTrace();
  3722. throw new Exception("发送LIMS系统失败,具体原因为["+e.getMessage()+"]");
  3723. } finally {
  3724. connection.disconnect();
  3725. }
  3726. return result.toString();
  3727. }
  3728. /**
  3729. * 生成不带 "-" 的UUID
  3730. *
  3731. * @return
  3732. */
  3733. public static String getUUID() {
  3734. UUID uuid = UUID.randomUUID();
  3735. String str = uuid.toString();
  3736. String uuidStr = str.replace("-", "");
  3737. return uuidStr;
  3738. }
  3739. private void createSmpleLoglist(String josnString ,String memo,String sendName){
  3740. StringBuffer sqlucomm1 = new StringBuffer();
  3741. sqlucomm1.append("Delete From QCM_JHY_SAMPLE_LOG ");
  3742. sqlucomm1.append("where CREATE_TIME <= to_date(to_char(sysdate - 90, 'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss') ");
  3743. try {
  3744. this.getDao("testDao").ExcuteNonQuery(sqlucomm1.toString());
  3745. } catch (SQLException e) {
  3746. // TODO Auto-generated catch block
  3747. e.printStackTrace();
  3748. logger.info("---------------------------插入日志表失败-----------------------"+sqlucomm1);
  3749. }
  3750. int len = 0;
  3751. if(josnString.length()<= 3500){
  3752. len = josnString.length();
  3753. }else{
  3754. len = 3000;
  3755. }
  3756. String josnli = josnString.substring(0, len);
  3757. StringBuffer sqlucomm = new StringBuffer();
  3758. sqlucomm.append("INSERT INTO QCM_JHY_SAMPLE_LOG (GUID,MEMO,");
  3759. sqlucomm.append("CREATE_NAME,CREATE_TIME,JSON_TEXT) VALUES ('");
  3760. sqlucomm.append(getUUID()+"','"+memo+"',");
  3761. sqlucomm.append("'"+sendName+"',sysdate,'"+josnli+"')");
  3762. try {
  3763. this.getDao("testDao").ExcuteNonQuery(sqlucomm.toString());
  3764. } catch (SQLException e) {
  3765. // TODO Auto-generated catch block
  3766. e.printStackTrace();
  3767. logger.info("---------------------------插入日志表失败-----------------------"+sqlucomm);
  3768. }
  3769. }
  3770. /**
  3771. * 调用LIMS接收委托接口,实现委托下发 发送委托 中厚板预测抽样 Q235B Q355B
  3772. * @return cro
  3773. * @throws IOException
  3774. */
  3775. @SuppressWarnings("unchecked")
  3776. public CoreReturnObject ZHBYuCeSample(String Entrust,String sendId,String sendName,String sampleDeliveryTime){
  3777. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Inspection";
  3778. try {
  3779. String LCplineCode="LC";//全自动激光切割加工中心系统
  3780. StringBuffer sqlucomm = new StringBuffer();
  3781. TreeSet<String> treeSet0 = new TreeSet<String>();
  3782. String[] ja=Entrust.split(",");
  3783. String msInfo="";
  3784. if (ja!=null && ja.length>0) {
  3785. for (int i = 0; i < ja.length; i++) {
  3786. String sp = ja[i];
  3787. treeSet0.add(sp);
  3788. if ("".equals(msInfo)) {
  3789. msInfo="'"+sp+"'";
  3790. }else{
  3791. msInfo=msInfo+"'"+sp+"'";
  3792. }
  3793. if (i !=ja.length-1) {
  3794. msInfo=msInfo+",";
  3795. }
  3796. }
  3797. }
  3798. if (treeSet0.size()!=1) {
  3799. cro.setV_errCode(-1);
  3800. cro.setV_errMsg("预测抽样只能勾选一条委托抽样,请核实数据!");
  3801. return cro;
  3802. }
  3803. //查询检验 预测抽样 抽的是初样
  3804. sqlucomm.append("SELECT nvl(d.CHEM_INTERNALCONTROL,' ') CHEM_INTERNALCONTROL,nvl(d.CRAFT_EXECUTE,' ') CRAFT_EXECUTE,nvl(d.RZ_MIXROLL,' ') RZ_MIXROLL,"
  3805. + " nvl(d.FUNCTION_FUHE,' ') FUNCTION_FUHE,nvl(d.SHOULD_SAMPLE,'1') SHOULD_SAMPLE,"
  3806. + " d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  3807. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  3808. + " d.SMP_LOCATION,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  3809. + " d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,o.DELIVERY_STATE_DESC,"
  3810. + " m.CERT_INST_CODE,m.CERT_INST_NAME,m.SMP_CATG,d.PROCESS_NOS "
  3811. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  3812. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  3813. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS='0'"
  3814. + " and o.STEEL_CODE in ('Q235B','Q355B') and d.RZ_ROLL_SLAB_SEQ is null "
  3815. + " and d.SMP_TYPE_CODE='0' and rownum=1 ");
  3816. List<HashMap> lists=mapper.query(sqlucomm.toString());
  3817. if (lists==null || lists.size()<1) {
  3818. cro.setV_errCode(-1);
  3819. cro.setV_errMsg("未查到相应的预测抽样委托,只能预测抽样牌号为['Q235B','Q355B']的委托,请核实数据!");
  3820. return cro;
  3821. }
  3822. String designKey=lists.get(0).get("DESIGN_KEY").toString();
  3823. String dkey1 = designKey.substring(0, 5);//XGEC-
  3824. String dkey2 = designKey.substring(10, 11);//合同号倒数第三个是9 例: W112023010909 倒数第三个9
  3825. String dkey3 = designKey.substring(0, 3);//W16 非计划合同
  3826. String dkey4 = designKey.substring(0, 2);//16 非计划合同
  3827. if(StringUtils.isBlank(lists.get(0).get("CHEM_INTERNALCONTROL").toString())
  3828. || StringUtils.isBlank(lists.get(0).get("CRAFT_EXECUTE").toString())
  3829. || StringUtils.isBlank(lists.get(0).get("FUNCTION_FUHE").toString())){
  3830. cro.setV_errCode(-1);
  3831. cro.setV_errMsg("当前轧批未给预测值不能预测抽样!请选择其它轧批");
  3832. return cro;
  3833. }
  3834. if(StringUtils.isBlank(lists.get(0).get("RZ_MIXROLL").toString())){
  3835. cro.setV_errCode(-1);
  3836. cro.setV_errMsg("当前轧批未给抽样时间段标识!请选择其它轧批");
  3837. return cro;
  3838. }
  3839. String chemInternalcontrol =lists.get(0).get("CHEM_INTERNALCONTROL").toString();//成分是否符合内控标准(1为符合,0为不符合)
  3840. String craftExecute = lists.get(0).get("CRAFT_EXECUTE").toString();//工艺执行是否符合标准(1为符合,0为不符合)
  3841. String functionFuhe = lists.get(0).get("FUNCTION_FUHE").toString();//性能预测是否符合标准(1为符合,0为不符合)
  3842. String shouldSample = lists.get(0).get("SHOULD_SAMPLE").toString();//是否预测抽样(1为送实物样,0为预测抽样,2建议抽取样)
  3843. String deliveryStateDesc = lists.get(0).get("DELIVERY_STATE_DESC").toString();//交货状态
  3844. if(!"1".equals(chemInternalcontrol)){
  3845. cro.setV_errCode(-1);
  3846. cro.setV_errMsg("成分不符合!不能预测抽样,请选择其它轧批");
  3847. return cro;
  3848. }
  3849. if(!"1".equals(craftExecute)){
  3850. cro.setV_errCode(-1);
  3851. cro.setV_errMsg("工艺不符合!不能预测抽样,请选择其它轧批");
  3852. return cro;
  3853. }
  3854. if(!"1".equals(functionFuhe)){
  3855. cro.setV_errCode(-1);
  3856. cro.setV_errMsg("性能预测不合格!不能预测抽样,请选择其它轧批");
  3857. return cro;
  3858. }
  3859. if("XGEC-".equals(dkey1)){
  3860. cro.setV_errCode(-1);
  3861. cro.setV_errMsg("XGEC-出口合同!不能预测抽样,请选择其它轧批");
  3862. return cro;
  3863. }
  3864. if("9".equals(dkey2)){
  3865. cro.setV_errCode(-1);
  3866. cro.setV_errMsg("重点合同!不能预测抽样,请选择其它轧批");
  3867. return cro;
  3868. }
  3869. if("W16".equals(dkey3) || "16".equals(dkey4) || "19".equals(dkey4) ){
  3870. cro.setV_errCode(-1);
  3871. cro.setV_errMsg("W16、16、19非计划坯!不能预测抽样,请选择其它轧批");
  3872. return cro;
  3873. }
  3874. if(!"2".equals(shouldSample)){//2建议抽取样
  3875. cro.setV_errCode(-1);
  3876. cro.setV_errMsg("请在【是否预测抽样】字段中抽取为:Y(抽样)的轧批送样到试验室做试验,当前委托不为建议抽样轧批不能送样!");
  3877. return cro;
  3878. }
  3879. if(!"AR".equals(deliveryStateDesc) && !"CR".equals(deliveryStateDesc) && !"TMCP".equals(deliveryStateDesc)){//AR CR TMCP
  3880. cro.setV_errCode(-1);
  3881. cro.setV_errMsg("交换状态不为【AR、CR、TMCP】不满足预测抽样条件!");
  3882. return cro;
  3883. }
  3884. /* String sqlSend = "select t.* from QCM_JHY_SAMPLE_CONSIGN_D t "
  3885. +" where t.rz_mixroll = '"+lists.get(0).get("RZ_MIXROLL").toString()+"' "
  3886. +" and t.status <> '0' "
  3887. +" and t.Rz_Old_Sampl_No is not null "
  3888. +" and t.specimen_no = t.rz_old_sampl_no "
  3889. +" and t.pline_code in ('ZB1', 'HB1') and rownum=1 ";
  3890. List<HashMap> listsSend=mapper.query(sqlSend.toString());
  3891. if (listsSend!=null && listsSend.size()>=1) {
  3892. String vrz_mixroll =listsSend.get(0).get("RZ_MIXROLL").toString();
  3893. String vbatch_no =listsSend.get(0).get("BATCH_NO").toString();
  3894. cro.setV_errCode(-1);
  3895. cro.setV_errMsg("当前预测区间【'"+vrz_mixroll+"'】已抽样【'"+vbatch_no+"'】轧批不需要预测抽样第二次!");
  3896. return cro;
  3897. }*/
  3898. //获取数据进行验证
  3899. TreeSet<String> sizes=new TreeSet<String>();
  3900. for (int i = 0; i < lists.size(); i++) {
  3901. HashMap obj=lists.get(i);
  3902. sizes.add((String)obj.get("SMP_CATG"));
  3903. }
  3904. if (sizes.size()!=1) {
  3905. cro.setV_errCode(-1);
  3906. cro.setV_errMsg("待发送的检验委托数据只能同时发送一种类型的待检数据,请核实数据!");
  3907. return cro;
  3908. }
  3909. JSONArray tarDate=new JSONArray();
  3910. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  3911. Date date=new Date();
  3912. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3913. String dateString=simpleDateFormat.format(date);
  3914. //生成委托编号
  3915. String consignNo=new SimpleDateFormat("yyyyMMdd").format(date);
  3916. sqlucomm.setLength(0);
  3917. sqlucomm.append("SELECT max(to_number(substr(CONSIGN_NO,-3,3))) BIGSEQ from QCM_JHY_SAMPLE_CONSIGN_D where CONSIGN_NO like '"+consignNo+"%'");
  3918. HashMap map=mapper.queryOne(sqlucomm.toString());
  3919. BigDecimal count = BigDecimal.ZERO;
  3920. if( null != map.get("BIGSEQ")){
  3921. count=(BigDecimal)map.get("BIGSEQ");
  3922. }
  3923. if (count.compareTo(BigDecimal.ZERO)==1) {
  3924. count=count.add(BigDecimal.ONE);
  3925. }else{
  3926. count=BigDecimal.ONE;
  3927. }
  3928. consignNo=consignNo+String.format("%03d", count.intValue());
  3929. System.out.println("======="+count.intValue());
  3930. int seq=1;
  3931. String plineCodeLims = "";//中厚板送样产线,按送样时间确定
  3932. for (int i = 0; i < lists.size(); i++) {
  3933. HashMap obj=lists.get(i);
  3934. //中厚板送样产线
  3935. if(obj.get("PLINE_CODE").toString().equals("ZB1") || obj.get("PLINE_CODE").toString().equals("HB1")){
  3936. if(sampleDeliveryTime.contains("06:30:00") || sampleDeliveryTime.contains("10:30:00") ||
  3937. sampleDeliveryTime.contains("17:30:00") || sampleDeliveryTime.contains("20:30:00")){
  3938. plineCodeLims = "HB1";
  3939. }else if(sampleDeliveryTime.contains("03:00:00") || sampleDeliveryTime.contains("11:00:00") ||
  3940. sampleDeliveryTime.contains("15:00:00") || sampleDeliveryTime.contains("18:00:00") ||
  3941. sampleDeliveryTime.contains("21:00:00") || sampleDeliveryTime.contains("06:00:00") ){
  3942. plineCodeLims = "ZB1";
  3943. }
  3944. }
  3945. obj.put("PLINE_CODE_LIMS", plineCodeLims);
  3946. obj.put("SEND_ID", sendId);
  3947. obj.put("SEND_NAME", sendName);
  3948. obj.put("CONSIGN_NO", consignNo);
  3949. obj.put("CONSIGN_NO_SEQ", seq++);
  3950. obj.put("SEND_TIME", dateString);
  3951. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  3952. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  3953. //目标json
  3954. JSONObject tarObj=new JSONObject();
  3955. //主表数据
  3956. createTarObj(tarObj,smpleD);
  3957. //发送序号 createSendSeq
  3958. String sendSeq=createSendSeq(tarObj.getString("plineCode").toString());//发送序号
  3959. //String sendQ="select to_number(substr('"+sendSeq+"', 8)) PRINT_SEQ from dual t ";
  3960. String sendQ="select substr('"+sendSeq+"', 9) PRINT_SEQ from dual t ";
  3961. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  3962. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();
  3963. if(tarObj.getString("plineCode").equals("ZB1")){
  3964. tarObj.put("printSeq", 'Z'+PRINT_SEQ);
  3965. PRINT_SEQ='Z'+PRINT_SEQ;
  3966. }else if(tarObj.getString("plineCode").equals("HB1")){
  3967. tarObj.put("printSeq", 'H'+PRINT_SEQ);
  3968. PRINT_SEQ='H'+PRINT_SEQ;
  3969. }
  3970. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"' "
  3971. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' and SPECIMEN_NO = '"+obj.get("SPECIMEN_NO")+"' ";
  3972. mapper.updateJudgeStatus(qcmSendSeq.toString());
  3973. tarObj.put("sendSeq", sendSeq);
  3974. tarObj.put("CREATE_ID", sendId);
  3975. tarObj.put("CREATE_NAME", sendName);
  3976. tarObj.put("sampleDeliveryTime", sampleDeliveryTime);//送样时间点
  3977. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  3978. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  3979. if(obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  3980. tarObj.put("heatTreatment", obj.get("PROCESS_NOS"));
  3981. //传给lims的成分标识
  3982. String sql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t,QCM_JHY_SAMPLE_CONSIGN_M m "
  3983. +" where t.smp_no = m.smp_no and m.SMP_CATG = 'A' and t.batch_no = '"+smpleD.getString("BATCH_NO")+"' ";
  3984. List<HashMap> componentLog=mapper.query(sql.toString());
  3985. if(componentLog!=null && componentLog.size()>=1){
  3986. tarObj.put("componentLog", '1');//1代表有成分
  3987. }else{
  3988. tarObj.put("componentLog", '0');//0代表无成分
  3989. }
  3990. }
  3991. if ("5000".equals(obj.get("CERT_INST_CODE")) || "IC012".equals(obj.get("CERT_INST_CODE")) ) {
  3992. tarObj.put("type", "0");
  3993. }else{
  3994. tarObj.put("type", "1");
  3995. }
  3996. if ("B".equals(obj.get("SMP_CATG"))) {
  3997. //材质
  3998. sqlucomm.setLength(0);
  3999. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.SMP_NO,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  4000. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  4001. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.QUOTE_SEQ,T.MEMO,T.ITEM_CODE_L,"
  4002. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.CREATE_TIME,T.CREATE_ID,T.CREATE_NAME,T.SPECL_FL, "
  4003. + "T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,t.STDMEMO from QCM_JHY_SAMPLE_CONSIGN_D_ITEM T"
  4004. + " WHERE T.SPECIMEN_NO='"+obj.get("SPECIMEN_NO")+"' and (T.QUOTE_SPECIMEN_NO is null or T.QUOTE_SPECIMEN_NO='') and t.Fy_Quote_Specimen_No is null and t.QUOTE_MEMO is null ");
  4005. List<HashMap> items=mapper.query(sqlucomm.toString());
  4006. if (items!=null && items.size()>0) {
  4007. JSONArray arrayItem=new JSONArray();
  4008. for(int j = 0 ;j < items.size() ; j++){
  4009. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  4010. JSONObject tarItem=new JSONObject();
  4011. //子表数据
  4012. createItem(tarItem,oldItem);
  4013. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  4014. tarItem.put("tsFlag", "1");//探伤
  4015. }else{
  4016. tarItem.put("tsFlag", "0");//非探伤
  4017. }
  4018. arrayItem.add(tarItem);
  4019. }
  4020. tarObj.put("items", arrayItem);
  4021. }
  4022. }else{
  4023. //成分
  4024. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  4025. tarObj.putAll(chemItem);
  4026. }
  4027. tarDate.add(tarObj);
  4028. //全自动激光切割加工中心系统
  4029. HashMap<String,String> hm = new HashMap<String,String>();
  4030. hm.put("SPECIMEN_NO", obj.get("SPECIMEN_NO").toString());
  4031. hm.put("BATCH_NO", obj.get("BATCH_NO").toString());
  4032. hm.put("PLINE_CODE", LCplineCode);
  4033. if(LCplineCode.equals("HB1")){
  4034. String lcThick = obj.get("THICK").toString();
  4035. double lcThick2 = Double.parseDouble(lcThick);
  4036. if(lcThick2<=25){
  4037. LCtarDate.add(tarObj);
  4038. String strjg=qcmJg(hm);
  4039. mapper.insert(strjg);
  4040. }
  4041. }else if(LCplineCode.equals("ZB1")){
  4042. LCtarDate.add(tarObj);
  4043. String strjg=qcmJg(hm);
  4044. mapper.insert(strjg);
  4045. }
  4046. }
  4047. logger.info("-------发送jon数组--"+tarDate.toJSONString());
  4048. String tar=tarDate.toString();
  4049. String result = "";//调用url
  4050. try{
  4051. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  4052. if (result == null ||result.equals("null") || result.equals("")) {
  4053. cro.setV_errCode(-1);
  4054. cro.setV_errMsg("发送LIMS系统失败!返回值:"+result);
  4055. SqlSession.rollback();
  4056. return cro;
  4057. }
  4058. }catch(Exception e){
  4059. cro.setV_errCode(-1);
  4060. cro.setV_errMsg(e.getMessage());
  4061. return cro;
  4062. }
  4063. String resultlist =result.substring(8, 11);
  4064. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  4065. cro.setV_errCode(-1);
  4066. cro.setV_errMsg("发送LIMS系统失败!"+result);
  4067. SqlSession.rollback();
  4068. SqlSession.rollback();
  4069. return cro;
  4070. }
  4071. if(resultlist.equals("200")){
  4072. for (HashMap list : lists) {
  4073. mapper.updateConsignNo((String)list.get("CONSIGN_NO"), (Integer)list.get("CONSIGN_NO_SEQ"),
  4074. sendId, sendName,(String)list.get("SPECIMEN_NO"));
  4075. String sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  4076. + " set t.SAMPLE_DELIVERY_TIME = '"+sampleDeliveryTime+"',t.PLINE_CODE_LIMS='"+plineCodeLims+"', "
  4077. + " t.RZ_OLD_SAMPL_NO='"+list.get("SPECIMEN_NO")+"' "
  4078. + " where t.SPECIMEN_NO = '"+(String)list.get("SPECIMEN_NO")+"' ";
  4079. mapper.UpdateQcmWt(sql.toString());
  4080. String sqlqu="select * from QCM_JHY_SAMPLE_CONSIGN_D_ITEM t "
  4081. + " where t.specimen_no = '"+(String)list.get("SPECIMEN_NO")+"' and t.QUOTE_MEMO like '已引用%' ";
  4082. List<HashMap> hmqu=mapper.query(sqlqu.toString());
  4083. if(hmqu==null || hmqu.size()<=0){
  4084. //删除 实绩表数据
  4085. sql="";
  4086. sql = "DELETE QCM_JHY_INSP_PHYSICS t where t.SPECIMEN_NO = '"+list.get("SPECIMEN_NO")+"' ";
  4087. mapper.delete(sql.toString());
  4088. }
  4089. //存储一下预测的轧批
  4090. String sqlins = " insert into qcm_jhy_sample_consign_yuce "
  4091. +" (smp_no, specimen_no, heat_no, batch_no, inspection_lot, freq_code, freq_name, material_no, smp_type_code, smp_type_name, "
  4092. +" consign_no, consign_no_seq, test_qty, smp_qty, smp_location, board_no, quote_consign_no, old_consign_no, pline_code, pline_name, "
  4093. +" status, validflag, source, guid, send_id, send_name, send_time, chem_item, product_cnt, create_time, smp_location_code, memo, weight, "
  4094. +" weight_std, weight_sfd, specimennozh, send_memo, item_flag, rz_roll_mana_no, rz_mixroll, rz_old_sampl_no, rz_roll_slab_seq, process_no, "
  4095. +" quote_batch_no, quote_batch_no_one, quote_memo, improve_memo, upr_time, collect_time, artificial_memo, zhb_specimen_no, process_nos, process_code, "
  4096. +" sample_delivery_time, onememo, sampl_pick_ry, special_quote_memo, chem_internalcontrol, craft_execute, phy_item, stove_time,FUNCTION_FUHE) "
  4097. +" select smp_no, specimen_no, heat_no, batch_no, inspection_lot, freq_code, freq_name, material_no, smp_type_code, smp_type_name, "
  4098. +" consign_no, consign_no_seq, test_qty, smp_qty, smp_location, board_no, quote_consign_no, old_consign_no, pline_code, pline_name, "
  4099. +" status, validflag, source, guid, send_id, send_name, send_time, chem_item, product_cnt, create_time, smp_location_code, memo, weight, "
  4100. +" weight_std, weight_sfd, specimennozh, send_memo, item_flag, rz_roll_mana_no, rz_mixroll, rz_old_sampl_no, rz_roll_slab_seq, process_no, "
  4101. +" quote_batch_no, quote_batch_no_one, quote_memo, improve_memo, upr_time, collect_time, artificial_memo, zhb_specimen_no, process_nos, process_code, "
  4102. +" sample_delivery_time, onememo, sampl_pick_ry, special_quote_memo, chem_internalcontrol, craft_execute, phy_item, stove_time,FUNCTION_FUHE "
  4103. +" from QCM_JHY_SAMPLE_CONSIGN_D t "
  4104. +" where t.specimen_no='"+(String)list.get("SPECIMEN_NO")+"' ";
  4105. mapper.insert(sqlins);
  4106. sql="";
  4107. sql="select * from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  4108. + " where t.smp_no=r.smp_no and r.steel_code in ('Q235B','Q355B') and t.STATUS='0' "
  4109. + " and r.design_key not like '16%' and r.design_key not like 'W16%' and r.design_key not like '19%' "
  4110. + " and t.Chem_Internalcontrol='1' and t.Craft_Execute='1' and t.FUNCTION_FUHE='1' and t.SHOULD_SAMPLE in ('0') "//,'2'
  4111. + " and t.RZ_ROLL_SLAB_SEQ is null and t.SPECIMEN_NO <> '"+(String)list.get("SPECIMEN_NO")+"' "
  4112. + " and t.rz_mixroll = '"+list.get("RZ_MIXROLL")+"' and t.PLINE_CODE='"+list.get("PLINE_CODE")+"' ";
  4113. List<HashMap> items=mapper.query(sql.toString());
  4114. if (items!=null && items.size()>0) {
  4115. for (int i = 0; i < items.size(); i++) {
  4116. String itemdesignKey=items.get(i).get("DESIGN_KEY").toString();
  4117. String itemddkey1 = itemdesignKey.substring(0, 5);//XGEC-
  4118. String itemddkey2 = itemdesignKey.substring(10, 11);//合同号倒数第三个是9 例: W112023010909 倒数第三个9
  4119. String itemddkey3 = itemdesignKey.substring(0, 3);//W16 非计划合同
  4120. String itemddkey4 = itemdesignKey.substring(0, 2);//16 非计划合同
  4121. if(!StringUtils.isBlank(items.get(i).get("CHEM_INTERNALCONTROL").toString())
  4122. && !StringUtils.isBlank(items.get(i).get("CRAFT_EXECUTE").toString())){
  4123. String itemdchemInternalcontrol =items.get(i).get("CHEM_INTERNALCONTROL").toString();//成分是否符合内控标准(1为符合,0为不符合)
  4124. String itemdcraftExecute = items.get(i).get("CRAFT_EXECUTE").toString();//工艺执行是否符合标准(1为符合,0为不符合)
  4125. String itemdFunctionFuhe = items.get(i).get("FUNCTION_FUHE").toString();//预测性能是否符合标准(1为符合,0为不符合)
  4126. if(!"XGEC-".equals(itemddkey1) && !"9".equals(itemddkey2)
  4127. && "1".equals(itemdchemInternalcontrol) && "1".equals(itemdcraftExecute) && "1".equals(itemdFunctionFuhe)
  4128. && !"W16".equals(itemddkey3) && !"16".equals(itemddkey4) && !"19".equals(itemddkey4)){
  4129. sql="";
  4130. sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  4131. + " set STATUS='3',SEND_TIME=sysdate,SEND_ID='"+sendId+"',SEND_NAME='"+sendName+"', "
  4132. + " t.RZ_OLD_SAMPL_NO='"+list.get("SPECIMEN_NO")+"' "
  4133. + " where t.SPECIMEN_NO = '"+(String)items.get(i).get("SPECIMEN_NO")+"' ";
  4134. mapper.UpdateQcmWt(sql.toString());
  4135. sql = "";
  4136. sql = " INSERT INTO QCM_JUDGE_LOG ( JUDGE_TYPE,MATERIAL_NO,CREATE_TIME,CREATE_NAME,PROD_LINE) "
  4137. +" VALUES ( 'P', '"+items.get(i).get("SMP_NO")+"', SYSDATE,'system','"+items.get(i).get("PLINE_CODE")+"')";
  4138. mapper.insert(sql);
  4139. }
  4140. }
  4141. }
  4142. }
  4143. }
  4144. cro.setV_errCode(1);
  4145. cro.setV_errMsg("发送成功");
  4146. }
  4147. for (HashMap list : lists) {
  4148. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  4149. qjog.setOperate_name(sendName);
  4150. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  4151. qjog.setOperate_type("预测抽样发送检验委托");
  4152. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  4153. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  4154. qjog.setMemo(list.get("SPECIMEN_NO") == null ?"":list.get("SPECIMEN_NO").toString());
  4155. mapper.insertQcmJudgeOperateLog(qjog);
  4156. }
  4157. SqlSession.commit();
  4158. //全自动激光切割加工中心系统
  4159. /*if(LCplineCode.equals("HB1") || LCplineCode.equals("ZB1")){
  4160. if(LCtarDate.size()>=1){
  4161. String jgkg=QcmJhyJgKg(LCplineCode);
  4162. if("1".equals(jgkg)){
  4163. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  4164. String LCtar=LCtarDate.toString();
  4165. httpURLPOSTLaserCenter(LCurlStr,LCtar,LCplineCode);
  4166. }
  4167. }
  4168. }*/
  4169. } catch (Exception e) {
  4170. e.printStackTrace();
  4171. SqlSession.rollback();
  4172. cro.setV_errCode(-1);
  4173. cro.setV_errMsg("预测抽样失败!"+e.getMessage());
  4174. return cro;
  4175. }finally {
  4176. SqlSession.close();
  4177. }
  4178. return cro;
  4179. }
  4180. /**
  4181. * 撤销预测抽样
  4182. * @param Entrust
  4183. * @return
  4184. */
  4185. public CoreReturnObject CancelZHBYuCeSample(String Entrust,String UserName,String zhyy){
  4186. try {
  4187. JSONArray arr = new JSONArray();
  4188. String[] ja=Entrust.split(",");
  4189. String msInfo="";
  4190. String resultlist ="";
  4191. TreeSet<String> treeSet = new TreeSet<String>();
  4192. if (ja!=null && ja.length>0) {
  4193. for (int i = 0; i < ja.length; i++) {
  4194. String sp = ja[i];
  4195. treeSet.add(sp);
  4196. JSONObject obj = new JSONObject();
  4197. obj.put("id",sp);
  4198. arr.add(obj);
  4199. if ("".equals(msInfo)) {
  4200. msInfo="'"+sp+"'";
  4201. }else{
  4202. msInfo=msInfo+"'"+sp+"'";
  4203. }
  4204. if (i !=ja.length-1) {
  4205. msInfo=msInfo+",";
  4206. }
  4207. }
  4208. }
  4209. if (treeSet.size()!=1) {
  4210. cro.setV_errCode(-1);
  4211. cro.setV_errMsg("撤销预测抽样只能勾选预测抽样委托,请核实数据!");
  4212. return cro;
  4213. }
  4214. //循环每个取样编号是否已判定
  4215. for (String trs : treeSet) {
  4216. String QuerySql="SELECT count(1) CNUM from QCM_JHY_SAMPLE_R_ORD t where t.JUDGE_STATUS <> '0' and "
  4217. + " t.SMP_NO=(SELECT d.SMP_NO from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"')";
  4218. List<HashMap> hashMaplist2 = mapper.query(QuerySql.toString());
  4219. BigDecimal cou2 = (BigDecimal) hashMaplist2.get(0).get("CNUM");
  4220. String coun2 = cou2.toString();
  4221. Integer integ2 = Integer.parseInt(coun2);
  4222. if(integ2 >= 1){
  4223. cro.setV_errCode(-1);
  4224. cro.setV_errMsg("取样编号【"+trs+"】材质已判定,不可撤销,请核实数据!");
  4225. return cro;
  4226. }
  4227. QuerySql="";
  4228. QuerySql="SELECT d.* from QCM_JHY_SAMPLE_CONSIGN_D d WHERE d.SPECIMEN_NO='"+trs+"' ";
  4229. List<HashMap> HMSP = mapper.query(QuerySql.toString());
  4230. if(HMSP!=null && HMSP.size()>=1){
  4231. if(!HMSP.get(0).get("SPECIMEN_NO").toString().equals(HMSP.get(0).get("RZ_OLD_SAMPL_NO").toString())){
  4232. cro.setV_errCode(-1);
  4233. cro.setV_errMsg("请撤销发送到LIMS那边的预测抽样的轧批!!!");
  4234. return cro;
  4235. }
  4236. }
  4237. }
  4238. //查询取样编号是否状态是已待确认,只有待确认的才能够撤销
  4239. StringBuffer sqlucomm = new StringBuffer();
  4240. //调用LZMES撤销委托接口,暂时没有
  4241. String urlStr = "http://172.16.0.169:82/Limsinterface/http/Revokeghtask";//调用url
  4242. String result = "";
  4243. try{
  4244. JSONObject tarObj=new JSONObject();
  4245. Date date=new Date();
  4246. SimpleDateFormat simleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4247. String ret=simleDateFormat.format(date);//系统时间
  4248. //主表数据
  4249. tarObj.put("revokeUser", UserName+"C");
  4250. tarObj.put("revokeReason", zhyy);
  4251. tarObj.put("revokeTime", ret);
  4252. tarObj.put("revokeOrderList", arr);
  4253. result = httpURLPOSTCase(urlStr,tarObj.toString());//调用url
  4254. if (result == null||result.equals("null") || result.equals("")) {
  4255. cro.setV_errCode(-1);
  4256. cro.setV_errMsg("撤回预测抽样LIMS返回失败!返回值:"+result);
  4257. return cro;
  4258. }
  4259. resultlist =result.substring(8, 11);
  4260. if (!resultlist.equals("200") || resultlist == null || resultlist.equals("")) {
  4261. cro.setV_errCode(-1);
  4262. cro.setV_errMsg("撤回预测抽样Lims返回失败!"+result);
  4263. return cro;
  4264. }
  4265. }catch(Exception e){
  4266. cro.setV_errCode(-1);
  4267. cro.setV_errMsg("撤回预测抽样Lims返回失败!"+e.getMessage());
  4268. return cro;
  4269. }
  4270. if (resultlist.equals("200")) {
  4271. //记录撤回的数据
  4272. String sqlDel = " Insert into QCM_JHY_SAMPLE_CONSIGN_D_DEL(SMP_NO,SPECIMEN_NO,HEAT_NO,BATCH_NO,INSPECTION_LOT,FREQ_CODE,FREQ_NAME,MATERIAL_NO,SMP_TYPE_CODE,SMP_TYPE_NAME,CONSIGN_NO,CONSIGN_NO_SEQ,TEST_QTY,SMP_QTY,SMP_LOCATION,BOARD_NO,QUOTE_CONSIGN_NO,OLD_CONSIGN_NO,PLINE_CODE,PLINE_NAME,STATUS,VALIDFLAG,SOURCE,GUID,SEND_ID,SEND_NAME,SEND_TIME,CHEM_ITEM,PRODUCT_CNT,CREATE_TIME,SMP_LOCATION_CODE,MEMO,WEIGHT,WEIGHT_STD,WEIGHT_SFD,SPECIMENNOZH,SEND_MEMO,ITEM_FLAG,CREATETIMEDEL,CREATENAMEDEL) "
  4273. + " select SMP_NO,SPECIMEN_NO,HEAT_NO,BATCH_NO,INSPECTION_LOT,FREQ_CODE,FREQ_NAME,MATERIAL_NO,SMP_TYPE_CODE,SMP_TYPE_NAME,CONSIGN_NO,CONSIGN_NO_SEQ,TEST_QTY,SMP_QTY,SMP_LOCATION,BOARD_NO,QUOTE_CONSIGN_NO,OLD_CONSIGN_NO,PLINE_CODE,PLINE_NAME,STATUS,VALIDFLAG,SOURCE,GUID,SEND_ID,SEND_NAME,SEND_TIME,CHEM_ITEM,PRODUCT_CNT,CREATE_TIME,SMP_LOCATION_CODE,MEMO,WEIGHT,WEIGHT_STD,WEIGHT_SFD,'1',SEND_MEMO,ITEM_FLAG,SYSDATE,'"+UserName+"' from QCM_JHY_SAMPLE_CONSIGN_D d"
  4274. + " where SPECIMEN_NO in ("+msInfo+")";
  4275. mapper.insert(sqlDel);
  4276. String updateSql="UPDATE QCM_JHY_SAMPLE_CONSIGN_D SET STATUS='0',SPECIMENNOZH = '1', PLINE_CODE_LIMS='', "
  4277. + " SEND_ID ='',SEND_NAME='',SEND_TIME='',SAMPLE_DELIVERY_TIME='',RZ_OLD_SAMPL_NO='',PRINT_SEQ='',PRINT_SEQJ='' "
  4278. + " where SPECIMEN_NO in ("+msInfo+")";
  4279. mapper.UpdateQcmWt(updateSql);
  4280. /* String sql="";
  4281. for (String trs : treeSet) {
  4282. sql="";
  4283. sql="select t.* from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  4284. + " where t.smp_no=r.smp_no and r.steel_code in ('Q235B','Q355B') "
  4285. + " and t.rz_mixroll is not null and t.RZ_ROLL_SLAB_SEQ is null "
  4286. + " and t.RZ_OLD_SAMPL_NO = '"+trs+"' ";
  4287. List<HashMap> items=mapper.query(sql.toString());
  4288. if (items!=null && items.size()>0) {
  4289. for (int i = 0; i < items.size(); i++) {
  4290. sql="";
  4291. sql = " update QCM_JHY_SAMPLE_CONSIGN_D t "
  4292. + " set STATUS='0',SEND_TIME='',SEND_ID='',SEND_NAME='', "
  4293. + " t.RZ_OLD_SAMPL_NO='' "
  4294. + " where t.SPECIMEN_NO = '"+(String)items.get(i).get("SPECIMEN_NO")+"' ";
  4295. mapper.UpdateQcmWt(sql.toString());
  4296. }
  4297. }
  4298. }*/
  4299. }
  4300. String sqlLog = "select * from QCM_JHY_SAMPLE_CONSIGN_D t where t.specimen_no in ("+msInfo+")";
  4301. List<HashMap> lists = mapper.query(sqlLog);
  4302. for (HashMap list : lists) {
  4303. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  4304. qjog.setOperate_name(UserName);
  4305. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  4306. qjog.setOperate_type("撤销预测抽样检验委托");
  4307. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  4308. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  4309. qjog.setMemo(list.get("SPECIMEN_NO") == null ?"":list.get("SPECIMEN_NO").toString());
  4310. mapper.insertQcmJudgeOperateLog(qjog);
  4311. }
  4312. SqlSession.commit();
  4313. }catch (Exception e) {
  4314. e.printStackTrace();
  4315. SqlSession.rollback();
  4316. cro.setV_errCode(-1);
  4317. cro.setV_errMsg("撤销预测抽样委托失败,请联系管理员查看问题!");
  4318. return cro;
  4319. }finally {
  4320. SqlSession.close();
  4321. }
  4322. cro.setV_errCode(1);
  4323. cro.setV_errMsg("撤销预测抽样发送成功");
  4324. return cro;
  4325. }
  4326. /**
  4327. * 发送序号
  4328. * @param pline_code
  4329. * @return
  4330. */
  4331. private String createSendSeq(String pline_code) {
  4332. // TODO Auto-generated method stub
  4333. String SendSeq="";
  4334. String plineCode=pline_code.substring(0, 1);
  4335. SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
  4336. String syh = plineCode +sdf.format(new Date());
  4337. StringBuffer sqlucomm = new StringBuffer();
  4338. if(pline_code.equals("HB1") || pline_code.equals("ZB1")){
  4339. sqlucomm.append("SELECT max(to_number(substr(T.SEND_SEQ, 8))) SEND_SEQ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.SEND_SEQ like '"+syh+"%' ");
  4340. }else{
  4341. sqlucomm.append("SELECT max(to_number(substr(T.SEND_SEQ, 8))) SEND_SEQ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.SEND_SEQ like '"+syh+"%' AND T.PLINE_CODE = '"+pline_code+"'");
  4342. }
  4343. HashMap result=mapper.queryOne(sqlucomm.toString());
  4344. BigDecimal seq=BigDecimal.ZERO;
  4345. if (result!=null && result.get("SEND_SEQ")!=null ) {
  4346. seq=(BigDecimal)result.get("SEND_SEQ");
  4347. }
  4348. seq=seq.add(BigDecimal.ONE);
  4349. SendSeq=syh+ String.format("%04d", seq.intValue());
  4350. return SendSeq;
  4351. }
  4352. /**
  4353. * 发送序号
  4354. * @param pline_code
  4355. * @return
  4356. */
  4357. private String createSendSeq2(String pline_code,String ptime) {
  4358. // TODO Auto-generated method stub
  4359. String SendSeq="";
  4360. String plineCode=pline_code.substring(0, 1);
  4361. SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
  4362. String syh = plineCode +sdf.format(new Date())+ptime;
  4363. StringBuffer sqlucomm = new StringBuffer();
  4364. if(pline_code.equals("HB1") || pline_code.equals("ZB1")){
  4365. sqlucomm.append("SELECT max(to_number(substr(T.SEND_SEQ, 12))) SEND_SEQ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.SEND_SEQ like '"+syh+"%' ");
  4366. }else{
  4367. sqlucomm.append("SELECT max(to_number(substr(T.SEND_SEQ, 8))) SEND_SEQ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.SEND_SEQ like '"+syh+"%' AND T.PLINE_CODE = '"+pline_code+"'");
  4368. }
  4369. HashMap result=mapper.queryOne(sqlucomm.toString());
  4370. BigDecimal seq=BigDecimal.ZERO;
  4371. if (result!=null && result.get("SEND_SEQ")!=null ) {
  4372. seq=(BigDecimal)result.get("SEND_SEQ");
  4373. }
  4374. seq=seq.add(BigDecimal.ONE);
  4375. SendSeq=syh+ String.format("%04d", seq.intValue());
  4376. return SendSeq;
  4377. }
  4378. /**
  4379. * 船检编号
  4380. * @param pline_code
  4381. * @return
  4382. */
  4383. private String createPintSeqJ(String pline_code,String cert_inst_code) {
  4384. // TODO Auto-generated method stub
  4385. String SendSeq="";
  4386. String plineCode=pline_code.substring(0, 1);
  4387. SimpleDateFormat sdf = new SimpleDateFormat("yyMM");
  4388. String syh = plineCode +sdf.format(new Date());
  4389. String instCode = "";
  4390. if(cert_inst_code.equals("IC005")){
  4391. instCode = "ABS*";
  4392. }else if(cert_inst_code.equals("IC009")){
  4393. instCode = "LR*";
  4394. }else if(cert_inst_code.equals("IC006")){
  4395. instCode = "NK*";
  4396. }else if(cert_inst_code.equals("IC007")){
  4397. instCode = "RINA*";
  4398. }else if(cert_inst_code.equals("IC002")){
  4399. instCode = "RS*";
  4400. }else if(cert_inst_code.equals("IC001")){
  4401. instCode = "DNV*";
  4402. }else if(cert_inst_code.equals("IC008")){
  4403. instCode = "IRS*";
  4404. }
  4405. syh += instCode;
  4406. StringBuffer sqlucomm = new StringBuffer();
  4407. sqlucomm.append("SELECT max(to_number(substr(T.PRINT_SEQJ, -4))) PRINT_SEQJ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.PRINT_SEQJ like '"+syh+"%' AND T.PRINT_SEQJ IS NOT NULL ");
  4408. HashMap result=mapper.queryOne(sqlucomm.toString());
  4409. BigDecimal seq=BigDecimal.ZERO;
  4410. if (result!=null && result.get("PRINT_SEQJ")!=null ) {
  4411. seq=(BigDecimal)result.get("PRINT_SEQJ");
  4412. }
  4413. seq=seq.add(BigDecimal.ONE);
  4414. SendSeq=syh+ String.format("%04d", seq.intValue());
  4415. return SendSeq;
  4416. }
  4417. /**
  4418. * 船检编号
  4419. * @param pline_code
  4420. * @return
  4421. */
  4422. private String createPintSeqJ2(String pline_code,String cert_inst_code) {
  4423. // TODO Auto-generated method stub
  4424. String SendSeq="";
  4425. //String plineCode=pline_code.substring(0, 1);
  4426. //SimpleDateFormat sdf = new SimpleDateFormat("yyMM");
  4427. //String syh = plineCode +sdf.format(new Date());
  4428. String syh ="";
  4429. String instCode = "";
  4430. if(cert_inst_code.equals("IC005")){
  4431. instCode = "AB";//美国船级社
  4432. }else if(cert_inst_code.equals("IC009")){
  4433. instCode = "LR";//英国船级社
  4434. }else if(cert_inst_code.equals("IC006")){
  4435. instCode = "K";//日本船级社
  4436. }else if(cert_inst_code.equals("IC007")){
  4437. instCode = "RI";//意大利船级社
  4438. }else if(cert_inst_code.equals("IC002")){
  4439. instCode = "PC";//俄罗斯
  4440. }
  4441. syh = instCode;
  4442. StringBuffer sqlucomm = new StringBuffer();
  4443. sqlucomm.append("SELECT max(to_number(substr(T.PRINT_SEQJ, -4))) PRINT_SEQJ FROM QCM_JHY_SAMPLE_CONSIGN_D T WHERE T.PRINT_SEQJ like '"+syh+"%' "
  4444. + " AND T.PRINT_SEQJ IS NOT NULL AND T.PRINT_SEQJLOT IS NULL and t.pline_code in ('ZB1','HB1') ");
  4445. HashMap result=mapper.queryOne(sqlucomm.toString());
  4446. BigDecimal seq=BigDecimal.ZERO;
  4447. if (result!=null && result.get("PRINT_SEQJ")!=null ) {
  4448. seq=(BigDecimal)result.get("PRINT_SEQJ");
  4449. }
  4450. seq=seq.add(BigDecimal.ONE);
  4451. SendSeq=syh+ String.format("%04d", seq.intValue());
  4452. return SendSeq;
  4453. }
  4454. /**
  4455. * 自动激光切割系统接口开关
  4456. * @param pline_code
  4457. * @return
  4458. */
  4459. private String QcmJhyJgKg(String pline_code) {
  4460. String sql="select t.* from QCM_JHY_JG_KG t where t.pline_code = '"+pline_code+"' and rownum=1";
  4461. HashMap result=mapper.queryOne(sql.toString());
  4462. if (result==null || result.size()<=0) {
  4463. return "0";
  4464. }
  4465. return result.get("KG").toString();
  4466. }
  4467. /**
  4468. * 发送Http Post请求 全自动激光切割加工中心系统*/
  4469. public static void httpURLPOSTLaserCenter(String methodUrl,String data,String plineCode) {
  4470. HttpURLConnection connection = null;
  4471. PrintWriter pw = null;
  4472. BufferedReader reader = null;
  4473. String line = "";
  4474. StringBuilder result = new StringBuilder();
  4475. try {
  4476. URL url = new URL(methodUrl);
  4477. data= URLEncoder.encode(data,"UTF-8") ;
  4478. connection = (HttpURLConnection)url.openConnection();// 根据URL生成HttpURLConnection
  4479. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  4480. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  4481. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  4482. connection.setUseCaches(false);// post请求不能使用缓存设为false
  4483. connection.setConnectTimeout(10000);// 连接主机的超时时间
  4484. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  4485. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  4486. connection.setRequestProperty("accept", "*/*");
  4487. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  4488. connection.setRequestProperty("charset", "utf-8");
  4489. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  4490. connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  4491. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  4492. pw = new PrintWriter(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
  4493. pw.write("data="+data);//json数据
  4494. pw.flush();
  4495. pw.close();
  4496. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  4497. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  4498. // 循环读取流
  4499. while (null != (line = reader.readLine())) {
  4500. result.append(line);
  4501. }
  4502. reader.close();
  4503. }
  4504. } catch (IOException e) {
  4505. /* e.printStackTrace();
  4506. try {
  4507. throw new Exception("发送全自动激光切割加工中心系统失败,具体原因为["+e.getMessage()+"]");
  4508. } catch (Exception e1) {
  4509. e1.printStackTrace();
  4510. }*/
  4511. } finally {
  4512. connection.disconnect();
  4513. }
  4514. String kkk=result.toString();
  4515. System.out.println("全自动激光切割加工中心系统-----"+kkk);
  4516. }
  4517. /**
  4518. * 补发激光接口
  4519. * @return cro
  4520. * @throws IOException
  4521. */
  4522. @SuppressWarnings("unchecked")
  4523. public CoreReturnObject SendJG(String Entrust,String sendId,String sendName,HashMap parmas){
  4524. try {
  4525. String h_PLINE_CODE=parmas.get("PLINE_CODE").toString();
  4526. String LCplineCode="LC";//全自动激光切割加工中心系统
  4527. StringBuffer sqlucomm = new StringBuffer();
  4528. String[] ja=Entrust.split(",");
  4529. String msInfo="";
  4530. if (ja!=null && ja.length>0) {
  4531. for (int i = 0; i < ja.length; i++) {
  4532. String sp = ja[i];
  4533. if ("".equals(msInfo)) {
  4534. msInfo="'"+sp+"'";
  4535. }else{
  4536. msInfo=msInfo+"'"+sp+"'";
  4537. }
  4538. if (i !=ja.length-1) {
  4539. msInfo=msInfo+",";
  4540. }
  4541. }
  4542. }
  4543. //查询检验
  4544. if(sendId.equals("JG")){
  4545. if(h_PLINE_CODE.equals("ZHB")){
  4546. sqlucomm.append("SELECT d.SMP_NO,d.ZHB_SPECIMEN_NO SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,d.SEND_ID,d.SEND_NAME,nvl(d.PLINE_CODE_LIMS,' ') PLINE_CODE_LIMS,"
  4547. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  4548. + " d.SMP_LOCATION,d.SMP_LOCATION_CODE,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  4549. + " d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,m.CERT_INST_CODE,m.CERT_INST_NAME,"
  4550. + " m.SMP_CATG,nvl(d.PROCESS_NOS,'null') PROCESS_NOS,nvl(d.SHOULD_SAMPLE,'非预测') SHOULD_SAMPLE,nvl(d.SEND_SEQ,'null') SEND_SEQ, "
  4551. + " nvl(d.PRINT_SEQ,'null') PRINT_SEQ,nvl(d.PRINT_SEQJ,'null') PRINT_SEQJ, d.CONSIGN_NO,d.CONSIGN_NO_SEQ,nvl(d.SAMPLE_DELIVERY_TIME,'null') SAMPLE_DELIVERY_TIME "
  4552. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  4553. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  4554. + " where d.ZHB_SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS !='0' and d.SAMPLE_DELIVERY_TIME is not null and rownum <=1 ");
  4555. }else{
  4556. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,d.SEND_ID,d.SEND_NAME,nvl(d.PLINE_CODE_LIMS,' ') PLINE_CODE_LIMS,"
  4557. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  4558. + " d.SMP_LOCATION,d.SMP_LOCATION_CODE,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  4559. + " d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,m.CERT_INST_CODE,m.CERT_INST_NAME,"
  4560. + " m.SMP_CATG,nvl(d.PROCESS_NOS,'null') PROCESS_NOS,nvl(d.SHOULD_SAMPLE,'非预测') SHOULD_SAMPLE,nvl(d.SEND_SEQ,'null') SEND_SEQ, "
  4561. + " nvl(d.PRINT_SEQ,'null') PRINT_SEQ,nvl(d.PRINT_SEQJ,'null') PRINT_SEQJ, d.CONSIGN_NO,d.CONSIGN_NO_SEQ,nvl(d.SAMPLE_DELIVERY_TIME,'null') SAMPLE_DELIVERY_TIME "
  4562. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  4563. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  4564. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' and d.STATUS !='0' and d.STATUS !='6' ");
  4565. }
  4566. }else{
  4567. sqlucomm.append("SELECT d.SMP_NO,d.SPECIMEN_NO,d.HEAT_NO,d.BATCH_NO,d.INSPECTION_LOT,d.FREQ_CODE,d.FREQ_NAME,"
  4568. + " d.MATERIAL_NO,d.SEND_MEMO,d.SMP_TYPE_CODE,d.SMP_TYPE_NAME,d.CONSIGN_NO,d.CONSIGN_NO_SEQ,d.TEST_QTY,d.SMP_QTY,"
  4569. + " d.SMP_LOCATION,d.SMP_LOCATION_CODE,d.BOARD_NO,d.QUOTE_CONSIGN_NO,d.OLD_CONSIGN_NO,d.PLINE_CODE,d.PLINE_NAME,d.CHEM_ITEM,"
  4570. + " d.SOURCE,d.PRODUCT_CNT,d.MEMO, o.STEEL_CODE,o.STEEL_NAME ,o.THICK,o.WIDTH ,o.LENGTH ,o.DESIGN_KEY,m.CERT_INST_CODE,m.CERT_INST_NAME,"
  4571. + " m.SMP_CATG,nvl(d.PROCESS_NOS,'null') PROCESS_NOS,nvl(d.SHOULD_SAMPLE,'非预测') SHOULD_SAMPLE,nvl(d.SEND_SEQ,'null') SEND_SEQ, "
  4572. + " nvl(d.PRINT_SEQ,'null') PRINT_SEQ,nvl(d.PRINT_SEQJ,'null') PRINT_SEQJ, d.CONSIGN_NO,d.CONSIGN_NO_SEQ,nvl(d.SAMPLE_DELIVERY_TIME,'null') SAMPLE_DELIVERY_TIME "
  4573. + " FROM QCM_JHY_SAMPLE_CONSIGN_D d INNER JOIN QCM_JHY_SAMPLE_CONSIGN_M m "
  4574. + " ON d.SMP_NO=m.SMP_NO INNER JOIN QCM_JHY_SAMPLE_R_ORD O ON d.SMP_NO = o.SMP_NO "
  4575. + " where d.SPECIMEN_NO in ("+msInfo+") and d.VALIDFLAG='1' ");
  4576. }
  4577. List<HashMap> lists=mapper.query(sqlucomm.toString());
  4578. if (lists==null || lists.size()<1) {
  4579. cro.setV_errCode(-1);
  4580. cro.setV_errMsg("待发送的检验委托数据已经不存在,请核实数据!");
  4581. return cro;
  4582. }
  4583. String tresteelCode = "";//合并牌号
  4584. if(h_PLINE_CODE.equals("ZHB")){
  4585. String sqlZHB= "select r.STEEL_CODE from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  4586. +" where t.smp_no = r.smp_no and t.Zhb_Specimen_No in ("+msInfo+") "
  4587. +" GROUP BY r.steel_code order by r.steel_code";
  4588. List<HashMap> listsZHB=mapper.query(sqlZHB.toString());
  4589. if(listsZHB!=null && listsZHB.size()>=1){
  4590. for (int i = 0; i < listsZHB.size(); i++) {
  4591. HashMap obj=listsZHB.get(i);
  4592. String strSteelCode =(String)obj.get("STEEL_CODE");
  4593. if(StringUtils.isBlank(tresteelCode)){//是否为空牌号
  4594. tresteelCode = strSteelCode;
  4595. }else{
  4596. tresteelCode = tresteelCode +","+strSteelCode;
  4597. }
  4598. }
  4599. }else{
  4600. cro.setV_errCode(-1);
  4601. cro.setV_errMsg("待发送的检验委托数据已经不存在,请核实数据!");
  4602. return cro;
  4603. }
  4604. }
  4605. JSONArray tarDate=new JSONArray();
  4606. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  4607. Date date=new Date();
  4608. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  4609. String dateString=simpleDateFormat.format(date);
  4610. for (int i = 0; i < lists.size(); i++) {
  4611. HashMap obj=lists.get(i);
  4612. if(sendId.equals("JG")){
  4613. obj.put("SEND_ID", obj.get("SEND_ID").toString());
  4614. obj.put("SEND_NAME", obj.get("SEND_NAME").toString());
  4615. }else{
  4616. obj.put("SEND_ID", sendId);
  4617. obj.put("SEND_NAME", sendName);
  4618. }
  4619. obj.put("CONSIGN_NO", obj.get("CONSIGN_NO").toString());
  4620. obj.put("CONSIGN_NO_SEQ", obj.get("CONSIGN_NO_SEQ").toString());
  4621. obj.put("SEND_TIME", dateString);
  4622. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  4623. JSONObject smpleD = JSONObject.parseObject(JSON.toJSONString(obj));
  4624. //目标json
  4625. JSONObject tarObj=new JSONObject();
  4626. //主表数据
  4627. createTarObj(tarObj,smpleD);
  4628. tarObj.put("printSeq", obj.get("PRINT_SEQ").toString());//打印序号
  4629. tarObj.put("PRINTSEQJ", obj.get("PRINT_SEQJ").toString());//船检编号
  4630. tarObj.put("sendSeq", obj.get("SEND_SEQ").toString());//发送序号
  4631. tarObj.put("CREATE_ID", sendId);
  4632. tarObj.put("CREATE_NAME", sendName);
  4633. tarObj.put("sampleDeliveryTime", obj.get("SAMPLE_DELIVERY_TIME").toString());//送样时间点
  4634. tarObj.put("cretInstCode", obj.get("CERT_INST_CODE"));
  4635. tarObj.put("cretInstName", obj.get("CERT_INST_NAME"));
  4636. if(h_PLINE_CODE.equals("ZHB")){
  4637. tarObj.put("steelCode",tresteelCode);//牌号合并
  4638. tarObj.put("steelName",tresteelCode);//牌号合并
  4639. }
  4640. if(obj.get("PLINE_CODE").equals("ZB1") || obj.get("PLINE_CODE").equals("HB1")){
  4641. tarObj.put("heatTreatment", obj.get("PROCESS_NOS"));
  4642. //传给lims的成分标识
  4643. String sql ="select t.* from QCM_JHY_SAMPLE_CONSIGN_D t,QCM_JHY_SAMPLE_CONSIGN_M m "
  4644. +" where t.smp_no = m.smp_no and m.SMP_CATG = 'A' and t.batch_no = '"+smpleD.getString("BATCH_NO")+"' ";
  4645. List<HashMap> componentLog=mapper.query(sql.toString());
  4646. if(componentLog!=null && componentLog.size()>=1){
  4647. tarObj.put("componentLog", '1');//1代表有成分
  4648. }else{
  4649. tarObj.put("componentLog", '0');//0代表无成分
  4650. }
  4651. }
  4652. if ("5000".equals(obj.get("CERT_INST_CODE")) || "IC012".equals(obj.get("CERT_INST_CODE")) ) {
  4653. tarObj.put("type", "0");
  4654. }else{
  4655. tarObj.put("type", "1");
  4656. }
  4657. if ("B".equals(obj.get("SMP_CATG"))) {
  4658. //材质
  4659. sqlucomm.setLength(0);
  4660. if(h_PLINE_CODE.equals("ZHB")){
  4661. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  4662. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  4663. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.MEMO,T.ITEM_CODE_L,"
  4664. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.SPECL_FL,T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX, "
  4665. + " T.STDMEMO from QCM_JHY_ZHB_PHYSICS T WHERE T.SPECIMEN_NO='"+Entrust+"' ");
  4666. }else{
  4667. sqlucomm.append("select T.SPECIMEN_NO,T.SEQ,T.SMP_NO,T.PHY_NAME_L,T.PHY_CODE_L,T.PHY_CODE_M,T.PHY_NAME_M,T.PHY_CODE_S,"
  4668. + "T.PHY_NAME_S,T.ITEM_CODE_D,T.ITEM_NAME_D,T.ITEM_CODE_T,T.ITEM_NAME_T,T.ITEM_CODE_S,T.ITEM_NAME_S,"
  4669. + "T.ISJUDGE,T.JUDGE_BASIS,T.PHY_UNIT,T.GROUP_SEQ,T.QUOTE_SPECIMEN_NO,T.QUOTE_SEQ,T.MEMO,T.ITEM_CODE_L,"
  4670. + " T.ITEM_DESC_L,T.TEST_QTY,T.SMP_QTY,T.CREATE_TIME,T.CREATE_ID,T.CREATE_NAME,T.SPECL_FL, "
  4671. + "T.STDMIN_SIGN,T.STDMIN,T.STDMAX_SIGN,T.STDMAX,t.STDMEMO from QCM_JHY_SAMPLE_CONSIGN_D_ITEM T"
  4672. + " WHERE T.SPECIMEN_NO='"+obj.get("SPECIMEN_NO")+"' and (T.QUOTE_SPECIMEN_NO is null or T.QUOTE_SPECIMEN_NO='') and t.Fy_Quote_Specimen_No is null and t.QUOTE_MEMO is null ");
  4673. }
  4674. List<HashMap> items=mapper.query(sqlucomm.toString());
  4675. if (items!=null && items.size()>0) {
  4676. JSONArray arrayItem=new JSONArray();
  4677. for(int j = 0 ;j < items.size() ; j++){
  4678. JSONObject oldItem =JSONObject.parseObject(JSON.toJSONString(items.get(j))) ;
  4679. JSONObject tarItem=new JSONObject();
  4680. //子表数据
  4681. createItem(tarItem,oldItem);
  4682. if(oldItem.getString("PHY_NAME_M").equals("现场洛氏硬度HRC")){
  4683. tarItem.put("tsFlag", "1");//探伤
  4684. }else{
  4685. tarItem.put("tsFlag", "0");//非探伤
  4686. }
  4687. arrayItem.add(tarItem);
  4688. }
  4689. tarObj.put("items", arrayItem);
  4690. }
  4691. }else{
  4692. //成分
  4693. JSONObject chemItem=JSON.parseObject((String)obj.get("CHEM_ITEM"));
  4694. tarObj.putAll(chemItem);
  4695. }
  4696. tarDate.add(tarObj);
  4697. //全自动激光切割加工中心系统
  4698. if(LCplineCode.equals("HB1")){
  4699. String lcThick = obj.get("THICK").toString();
  4700. double lcThick2 = Double.parseDouble(lcThick);
  4701. if(lcThick2<=25){
  4702. LCtarDate.add(tarObj);
  4703. }
  4704. }else if(LCplineCode.equals("ZB1") || LCplineCode.equals("RZ1")){
  4705. LCtarDate.add(tarObj);
  4706. }
  4707. }
  4708. logger.info(new Date().toString()+"--补发激光jon数组--"+tarDate.toJSONString()+"\n");
  4709. String tar=tarDate.toString();
  4710. String result = "";
  4711. //全自动激光切割加工中心系统
  4712. if(LCtarDate.size()>=1){
  4713. //开关状态
  4714. String jgkg=QcmJhyJgKg(LCplineCode);
  4715. if("1".equals(jgkg)){
  4716. String LCurlStr = "http://172.16.0.169:82/Limsinterface/http/Tgcut";
  4717. String LCtar=LCtarDate.toString();
  4718. result = httpURLPOSTLaserCenter2(LCurlStr,LCtar,LCplineCode);
  4719. logger.info(new Date().toString()+"--激光返回--"+result+"\n");
  4720. }
  4721. }
  4722. if ( result == null || result.equals("")) {
  4723. cro.setV_errCode(-1);
  4724. cro.setV_errMsg("补发激光委托失败!返回值:"+result);
  4725. System.out.println("定时全自动激光切割加工中心系统失败-----"+result);
  4726. SqlSession.rollback();
  4727. return cro;
  4728. }
  4729. JSONObject jobject=JSON.parseObject(result);
  4730. String limsCode=jobject.getString("code");
  4731. String limsMessage=jobject.getString("message");
  4732. if(!limsCode.equals("200")){
  4733. cro.setV_errCode(-1);
  4734. cro.setV_errMsg("补发激光委托失败!"+result);
  4735. System.out.println("定时全自动激光切割加工中心系统失败-----"+result);
  4736. SqlSession.rollback();
  4737. return cro;
  4738. }
  4739. for (HashMap list : lists) {
  4740. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  4741. qjog.setOperate_name(sendName);
  4742. qjog.setBatchno(list.get("BATCH_NO") == null ?"":list.get("BATCH_NO").toString());
  4743. qjog.setOperate_type("补发激光委托");
  4744. qjog.setParams(list.get("MATERIAL_NO") == null ?"":list.get("MATERIAL_NO").toString());
  4745. qjog.setProd_line(list.get("PLINE_CODE") == null ?"":list.get("PLINE_CODE").toString());
  4746. qjog.setMemo(list.get("SPECIMEN_NO").toString());
  4747. mapper.insertQcmJudgeOperateLog(qjog);
  4748. }
  4749. if(sendId.equals("JG")){
  4750. String sqlup="update qcm_jhy_sample_consign_jg set yn = 'N',success_memo = '"+result+"' where SPECIMEN_NO= '"+Entrust+"' and YN='Y' ";
  4751. mapper.updateJudgeStatus(sqlup.toString());
  4752. }
  4753. SqlSession.commit();
  4754. } catch (Exception e) {
  4755. e.printStackTrace();
  4756. SqlSession.rollback();
  4757. cro.setV_errCode(-1);
  4758. cro.setV_errMsg("补发激光委托失败!"+e.getMessage());
  4759. System.out.println("定时全自动激光切割加工中心系统失败-----"+e.getMessage());
  4760. return cro;
  4761. }finally {
  4762. SqlSession.close();
  4763. }
  4764. cro.setV_errCode(1);
  4765. cro.setV_errMsg("补发激光委托成功");
  4766. return cro;
  4767. }
  4768. /**
  4769. * 发送Http Post请求 全自动激光切割加工中心系统补发*/
  4770. public static String httpURLPOSTLaserCenter2(String methodUrl,String data,String plineCode) {
  4771. HttpURLConnection connection = null;
  4772. PrintWriter pw = null;
  4773. BufferedReader reader = null;
  4774. String line = "";
  4775. StringBuilder result = new StringBuilder();
  4776. try {
  4777. URL url = new URL(methodUrl);
  4778. data= URLEncoder.encode(data,"UTF-8") ;
  4779. connection = (HttpURLConnection)url.openConnection();// 根据URL生成HttpURLConnection
  4780. connection.setDoOutput(true);// 设置是否向connection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false
  4781. connection.setDoInput(true); // 设置是否从connection读入,默认情况下是true;
  4782. connection.setRequestMethod("POST");// 设置请求方式为post,默认GET请求
  4783. connection.setUseCaches(false);// post请求不能使用缓存设为false
  4784. connection.setConnectTimeout(10000);// 连接主机的超时时间
  4785. connection.setReadTimeout(10000);// 从主机读取数据的超时时间
  4786. connection.setInstanceFollowRedirects(true);// 设置该HttpURLConnection实例是否自动执行重定向
  4787. connection.setRequestProperty("accept", "*/*");
  4788. connection.setRequestProperty("connection", "Keep-Alive");// 连接复用
  4789. connection.setRequestProperty("charset", "utf-8");
  4790. connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  4791. connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  4792. connection.connect();// 建立TCP连接,getOutputStream会隐含的进行connect,所以此处可以不要
  4793. pw = new PrintWriter(connection.getOutputStream());// 创建输入输出流,用于往连接里面输出携带的参数
  4794. pw.write("data="+data);//json数据
  4795. pw.flush();
  4796. pw.close();
  4797. if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
  4798. reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));// 发送http请求
  4799. // 循环读取流
  4800. while (null != (line = reader.readLine())) {
  4801. result.append(line);
  4802. }
  4803. reader.close();
  4804. }
  4805. } catch (IOException e) {
  4806. e.printStackTrace();
  4807. try {
  4808. throw new Exception("发送全自动激光切割加工中心系统失败,具体原因为["+e.getMessage()+"]");
  4809. } catch (Exception e1) {
  4810. e1.printStackTrace();
  4811. }
  4812. } finally {
  4813. connection.disconnect();
  4814. }
  4815. String kkk=result.toString();
  4816. System.out.println("全自动激光切割加工中心系统-----"+kkk);
  4817. return result.toString();
  4818. }
  4819. /**
  4820. * 生成钢印号
  4821. * @return cro
  4822. * @throws IOException
  4823. */
  4824. @SuppressWarnings("unchecked")
  4825. public CoreReturnObject GetGenerateSteel(String Entrust,HashMap parmas){
  4826. try {
  4827. String LCplineCode="LC";//全自动激光切割加工中心系统
  4828. String[] ja=Entrust.split(",");
  4829. String msInfo="";
  4830. if (ja!=null && ja.length>0) {
  4831. for (int i = 0; i < ja.length; i++) {
  4832. String sp = ja[i];
  4833. if ("".equals(msInfo)) {
  4834. msInfo="'"+sp+"'";
  4835. }else{
  4836. msInfo=msInfo+"'"+sp+"'";
  4837. }
  4838. if (i !=ja.length-1) {
  4839. msInfo=msInfo+",";
  4840. }
  4841. }
  4842. }
  4843. //查询检验
  4844. String sql="select t.specimen_no,t.batch_no,nvl(t.zhb_specimen_no,' ') zhb_specimen_no,t.material_no,r.thick,t.pline_code,t.Pline_Code_Lims, "
  4845. + " r.Cert_Inst_Code,t.SAMPLE_DELIVERY_TIME from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  4846. +" where t.smp_no = r.smp_no and (t.specimen_no in ("+msInfo+") or t.zhb_specimen_no in ("+msInfo+")) "
  4847. +" and t.Print_Seq is null and t.Pline_Code_Lims is not null and t.SAMPLE_DELIVERY_TIME is not null "
  4848. +" order by t.SAMPLE_DELIVERY_TIME asc,r.steel_code asc,t.MATERIAL_NO asc ";
  4849. List<HashMap> lists=mapper.query(sql.toString());
  4850. if (lists==null || lists.size()<1) {
  4851. cro.setV_errCode(-1);
  4852. cro.setV_errMsg("数据已经不存在,请核实数据!");
  4853. return cro;
  4854. }
  4855. TreeSet<String> strcic = new TreeSet<String>();//认证机构
  4856. TreeSet<String> strsdt = new TreeSet<String>();//送样时间点
  4857. for (int i = 0; i < lists.size(); i++) {
  4858. HashMap obj=lists.get(i);
  4859. strcic.add(obj.get("CERT_INST_CODE").toString());
  4860. strsdt.add(obj.get("SAMPLE_DELIVERY_TIME").toString());
  4861. }
  4862. /* if(strcic.size()>=2){
  4863. cro.setV_errCode(-1);
  4864. cro.setV_errMsg("只能选择同一个认证机构生成编号!请核实数据!");
  4865. return cro;
  4866. }*/
  4867. if(strsdt.size()>=2){
  4868. cro.setV_errCode(-1);
  4869. cro.setV_errMsg("只能选择同一送样时间点!请核实数据!");
  4870. return cro;
  4871. }
  4872. JSONArray tarDate=new JSONArray();//LIMS
  4873. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  4874. TreeSet<String> strsno = new TreeSet<String>();//取样编号
  4875. for (int i = 0; i < lists.size(); i++) {
  4876. HashMap obj=lists.get(i);
  4877. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  4878. String plineCodeLims=obj.get("PLINE_CODE_LIMS").toString();//送样产线
  4879. String zhb_specimen_no="";//合并取样编号
  4880. if(!StringUtils.isBlank(obj.get("ZHB_SPECIMEN_NO").toString())){
  4881. zhb_specimen_no = obj.get("ZHB_SPECIMEN_NO").toString();
  4882. }
  4883. String specimen_no=obj.get("SPECIMEN_NO").toString();//取样编号
  4884. //目标json
  4885. JSONObject tarObj=new JSONObject();
  4886. if(!StringUtils.isBlank(zhb_specimen_no)){//是否是合并的
  4887. String strno="0";
  4888. for (String string : strsno) {
  4889. if(string.equals(zhb_specimen_no)){
  4890. strno="1";
  4891. }
  4892. }
  4893. if(strno.equals("1")){
  4894. continue;
  4895. }
  4896. strsno.add(zhb_specimen_no);
  4897. tarObj.put("SPECIMENNO", zhb_specimen_no);//合并取样编号
  4898. }else{
  4899. tarObj.put("SPECIMENNO", specimen_no);//取样编号
  4900. }
  4901. //送样时间点
  4902. String ptime = "";
  4903. String STIME=obj.get("SAMPLE_DELIVERY_TIME").toString();
  4904. if(STIME.contains("03:00:00")){
  4905. ptime = "0300";
  4906. }else if (STIME.contains("06:00:00")){
  4907. ptime = "0600";
  4908. }else if (STIME.contains("06:30:00") || STIME.contains("10:30:00")){
  4909. ptime = "0610";
  4910. }else if (STIME.contains("11:00:00")){
  4911. ptime = "1100";
  4912. }else if (STIME.contains("15:00:00")){
  4913. ptime = "1500";
  4914. }else if (STIME.contains("17:30:00") || STIME.contains("20:30:00")){
  4915. ptime = "1720";
  4916. }else if (STIME.contains("18:00:00")){
  4917. ptime = "1800";
  4918. }else if (STIME.contains("21:00:00")){
  4919. ptime = "2100";
  4920. }else if (STIME.contains("24:00:00")){
  4921. ptime = "2400";
  4922. }
  4923. //流水号
  4924. String sendSeq=createSendSeq2(plineCodeLims,ptime);
  4925. String sendQ="select substr('"+sendSeq+"', 13) PRINT_SEQ from dual t ";
  4926. List<HashMap> hmsendQ=mapper.query(sendQ.toString());
  4927. String PRINT_SEQ=hmsendQ.get(0).get("PRINT_SEQ").toString();//打印序号
  4928. if(plineCodeLims.equals("ZB1")){
  4929. tarObj.put("PRINTSEQ", 'Z'+PRINT_SEQ);//打印序号
  4930. PRINT_SEQ='Z'+PRINT_SEQ;
  4931. }else if(plineCodeLims.equals("HB1")){
  4932. tarObj.put("PRINTSEQ", 'H'+PRINT_SEQ);//打印序号
  4933. PRINT_SEQ='H'+PRINT_SEQ;
  4934. }
  4935. //船检编号
  4936. String printseqj = "";
  4937. String plineCodeJ=plineCodeLims;
  4938. String certInstCodeJ = obj.get("CERT_INST_CODE").toString();
  4939. if(certInstCodeJ.equals("IC005") || certInstCodeJ.equals("IC009") || certInstCodeJ.equals("IC006") || certInstCodeJ.equals("IC007") ||
  4940. certInstCodeJ.equals("IC002")){
  4941. printseqj = createPintSeqJ2(plineCodeJ,certInstCodeJ);
  4942. //String printseqj2=printseqj.substring(4, printseqj.length());
  4943. tarObj.put("PRINTSEQJ", printseqj);//船检编号
  4944. }else{
  4945. tarObj.put("PRINTSEQJ", "");//船检编号
  4946. }
  4947. String specimenNosql=" and SPECIMEN_NO = '"+obj.get("SPECIMEN_NO")+"' ";
  4948. if(!StringUtils.isBlank(zhb_specimen_no)){
  4949. specimenNosql =" and ZHB_SPECIMEN_NO = '"+zhb_specimen_no+"' ";
  4950. }
  4951. String qcmSendSeq =" update QCM_JHY_SAMPLE_CONSIGN_D t set SEND_SEQ = '"+sendSeq+"',PRINT_SEQ='"+PRINT_SEQ+"',PRINT_SEQJ='"+printseqj+"' "
  4952. + " where PLINE_CODE = '"+obj.get("PLINE_CODE")+"' "
  4953. + specimenNosql;
  4954. mapper.updateJudgeStatus(qcmSendSeq.toString());
  4955. //主表数据
  4956. tarObj.put("SENDSEQ", sendSeq);//发送序号
  4957. tarObj.put("CREATEID", parmas.get("USERID"));
  4958. tarObj.put("CREATENAME", parmas.get("USERNAME"));
  4959. tarDate.add(tarObj);
  4960. //全自动激光切割加工中心系统
  4961. if(LCplineCode.equals("HB1")){
  4962. String lcThick = obj.get("THICK").toString();
  4963. double lcThick2 = Double.parseDouble(lcThick);
  4964. if(lcThick2<=25){
  4965. LCtarDate.add(tarObj);
  4966. }
  4967. }else if(LCplineCode.equals("ZB1") || LCplineCode.equals("RZ1")){
  4968. LCtarDate.add(tarObj);
  4969. }
  4970. QcmJudgeOperateLog qjog = new QcmJudgeOperateLog();
  4971. qjog.setOperate_name(parmas.get("USERNAME").toString());
  4972. qjog.setBatchno(obj.get("BATCH_NO") == null ?"":obj.get("BATCH_NO").toString());
  4973. qjog.setOperate_type("生成钢印号");
  4974. qjog.setParams(obj.get("MATERIAL_NO") == null ?"":obj.get("MATERIAL_NO").toString());
  4975. qjog.setProd_line(obj.get("PLINE_CODE") == null ?"":obj.get("PLINE_CODE").toString());
  4976. qjog.setMemo(obj.get("SPECIMEN_NO").toString()+":"+sendSeq+":"+PRINT_SEQ+":"+printseqj);
  4977. mapper.insertQcmJudgeOperateLog(qjog);
  4978. }
  4979. SqlSession.commit();
  4980. /* String tar=tarDate.toString();
  4981. System.out.println("LIMS"+tarDate.toString()+"\n");
  4982. System.out.println("激光"+LCtarDate.toString());
  4983. String result = "";
  4984. try{
  4985. String urlStr="";
  4986. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  4987. if (result == null ||result.equals("null") || result.equals("")) {
  4988. cro.setV_errCode(-1);
  4989. cro.setV_errMsg("发送LIMS/激光系统编号失败!请补发,LIMS返回值:"+result);
  4990. return cro;
  4991. }
  4992. JSONObject jobject=JSON.parseObject(result);
  4993. String limsCode=jobject.getString("code");
  4994. if(!limsCode.equals("200")){
  4995. cro.setV_errCode(-1);
  4996. cro.setV_errMsg("发送LIMS/激光系统编号失败!请补发,LIMS返回值:"+result);
  4997. return cro;
  4998. }
  4999. //全自动激光切割加工中心系统
  5000. result = "";
  5001. if(LCtarDate.size()>=1){
  5002. //开关状态
  5003. String jgkg=QcmJhyJgKg(LCplineCode);
  5004. if("1".equals(jgkg)){
  5005. String LCurlStr = "";
  5006. String LCtar=LCtarDate.toString();
  5007. result = httpURLPOSTLaserCenter2(LCurlStr,LCtar,LCplineCode);
  5008. }
  5009. if ( result == null || result.equals("")) {
  5010. cro.setV_errCode(-1);
  5011. cro.setV_errMsg("发送激光编号返回失败!请补发,返回值:"+result);
  5012. return cro;
  5013. }
  5014. JSONObject jobject2=JSON.parseObject(result);
  5015. String limsCode2=jobject2.getString("code");
  5016. if(!limsCode2.equals("200")){
  5017. cro.setV_errCode(-1);
  5018. cro.setV_errMsg("发送激光编号返回失败!请补发,返回值:"+result);
  5019. return cro;
  5020. }
  5021. }
  5022. }catch(Exception e){
  5023. cro.setV_errCode(-1);
  5024. cro.setV_errMsg(e.getMessage());
  5025. return cro;
  5026. }*/
  5027. } catch (Exception e) {
  5028. e.printStackTrace();
  5029. SqlSession.rollback();
  5030. cro.setV_errCode(-1);
  5031. cro.setV_errMsg("编号生成失败!"+e.getMessage());
  5032. return cro;
  5033. }finally {
  5034. SqlSession.close();
  5035. }
  5036. cro.setV_errCode(1);
  5037. cro.setV_errMsg("编号生成成功");
  5038. return cro;
  5039. }
  5040. /**
  5041. * 补发钢印号
  5042. * @return cro
  5043. * @throws IOException
  5044. */
  5045. @SuppressWarnings("unchecked")
  5046. public CoreReturnObject GetDoBLIMS(String Entrust,HashMap parmas){
  5047. try {
  5048. String LCplineCode="LC";//全自动激光切割加工中心系统
  5049. String[] ja=Entrust.split(",");
  5050. String msInfo="";
  5051. if (ja!=null && ja.length>0) {
  5052. for (int i = 0; i < ja.length; i++) {
  5053. String sp = ja[i];
  5054. if ("".equals(msInfo)) {
  5055. msInfo="'"+sp+"'";
  5056. }else{
  5057. msInfo=msInfo+"'"+sp+"'";
  5058. }
  5059. if (i !=ja.length-1) {
  5060. msInfo=msInfo+",";
  5061. }
  5062. }
  5063. }
  5064. //查询检验
  5065. String sql="select t.specimen_no,t.batch_no,nvl(t.zhb_specimen_no,' ') zhb_specimen_no,t.material_no,r.thick,t.pline_code,t.Pline_Code_Lims, "
  5066. + " r.Cert_Inst_Code,t.SAMPLE_DELIVERY_TIME,t.SEND_SEQ,t.PRINT_SEQ,nvl(t.PRINT_SEQJ,' ') PRINT_SEQJ "
  5067. + " from qcm_jhy_sample_consign_d t,qcm_jhy_sample_r_ord r "
  5068. +" where t.smp_no = r.smp_no and (t.specimen_no in ("+msInfo+") or t.zhb_specimen_no in ("+msInfo+")) "
  5069. +" and t.Print_Seq is not null and t.Pline_Code_Lims is not null "
  5070. ;
  5071. List<HashMap> lists=mapper.query(sql.toString());
  5072. if (lists==null || lists.size()<1) {
  5073. cro.setV_errCode(-1);
  5074. cro.setV_errMsg("数据已经不存在,请核实数据!");
  5075. return cro;
  5076. }
  5077. JSONArray tarDate=new JSONArray();//LIMS
  5078. JSONArray LCtarDate=new JSONArray();//全自动激光切割加工中心系统
  5079. TreeSet<String> strsno = new TreeSet<String>();//取样编号
  5080. for (int i = 0; i < lists.size(); i++) {
  5081. HashMap obj=lists.get(i);
  5082. LCplineCode=obj.get("PLINE_CODE").toString();//全自动激光切割加工中心系统
  5083. String zhb_specimen_no="";//合并取样编号
  5084. if(!StringUtils.isBlank(obj.get("ZHB_SPECIMEN_NO").toString())){
  5085. zhb_specimen_no = obj.get("ZHB_SPECIMEN_NO").toString();
  5086. }
  5087. String specimen_no=obj.get("SPECIMEN_NO").toString();//取样编号
  5088. //目标json
  5089. JSONObject tarObj=new JSONObject();
  5090. if(!StringUtils.isBlank(zhb_specimen_no)){//是否是合并的
  5091. String strno="0";
  5092. for (String string : strsno) {
  5093. if(string.equals(zhb_specimen_no)){
  5094. strno="1";
  5095. }
  5096. }
  5097. if(strno.equals("1")){
  5098. continue;
  5099. }
  5100. strsno.add(zhb_specimen_no);
  5101. tarObj.put("SPECIMENNO", zhb_specimen_no);//合并取样编号
  5102. }else{
  5103. tarObj.put("SPECIMENNO", specimen_no);//取样编号
  5104. }
  5105. tarObj.put("SENDSEQ", obj.get("SEND_SEQ").toString());//发送序号
  5106. tarObj.put("PRINTSEQ", obj.get("PRINT_SEQ").toString());//打印序号
  5107. if(!StringUtils.isBlank(obj.get("PRINT_SEQJ").toString())){
  5108. tarObj.put("PRINTSEQJ", obj.get("PRINT_SEQJ").toString());//船检编号
  5109. }else{
  5110. tarObj.put("PRINTSEQJ", "");//船检编号
  5111. }
  5112. tarObj.put("CREATEID", parmas.get("USERID"));
  5113. tarObj.put("CREATENAME", parmas.get("USERNAME"));
  5114. tarDate.add(tarObj);
  5115. //全自动激光切割加工中心系统
  5116. if(LCplineCode.equals("HB1")){
  5117. String lcThick = obj.get("THICK").toString();
  5118. double lcThick2 = Double.parseDouble(lcThick);
  5119. if(lcThick2<=25){
  5120. LCtarDate.add(tarObj);
  5121. }
  5122. }else if(LCplineCode.equals("ZB1")){
  5123. LCtarDate.add(tarObj);
  5124. }
  5125. }
  5126. String tar=tarDate.toString();
  5127. String result = "";
  5128. try{
  5129. if(parmas.get("BLG").equals("1")){
  5130. String urlStr="";
  5131. result = httpURLPOSTCaseNew(urlStr,tar);//调用url
  5132. if (result == null ||result.equals("null") || result.equals("")) {
  5133. cro.setV_errCode(-1);
  5134. cro.setV_errMsg("发LIMS系统失败,LIMS返回值:"+result);
  5135. return cro;
  5136. }
  5137. JSONObject jobject=JSON.parseObject(result);
  5138. String limsCode=jobject.getString("code");
  5139. if(!limsCode.equals("200")){
  5140. cro.setV_errCode(-1);
  5141. cro.setV_errMsg("发LIMS系统失败,LIMS返回值:"+result);
  5142. return cro;
  5143. }
  5144. }else if(parmas.get("BLG").equals("2")){
  5145. //全自动激光切割加工中心系统
  5146. result = "";
  5147. if(LCtarDate.size()>=1){
  5148. String LCurlStr = "";
  5149. String LCtar=LCtarDate.toString();
  5150. result = httpURLPOSTLaserCenter2(LCurlStr,LCtar,LCplineCode);
  5151. if ( result == null || result.equals("")) {
  5152. cro.setV_errCode(-1);
  5153. cro.setV_errMsg("发激光系统失败,返回值:"+result);
  5154. return cro;
  5155. }
  5156. JSONObject jobject2=JSON.parseObject(result);
  5157. String limsCode2=jobject2.getString("code");
  5158. if(!limsCode2.equals("200")){
  5159. cro.setV_errCode(-1);
  5160. cro.setV_errMsg("发激光系统失败,返回值:"+result);
  5161. return cro;
  5162. }
  5163. }
  5164. }
  5165. }catch(Exception e){
  5166. cro.setV_errCode(-1);
  5167. cro.setV_errMsg(e.getMessage());
  5168. return cro;
  5169. }
  5170. SqlSession.commit();
  5171. } catch (Exception e) {
  5172. e.printStackTrace();
  5173. SqlSession.rollback();
  5174. cro.setV_errCode(-1);
  5175. cro.setV_errMsg("发送失败!"+e.getMessage());
  5176. return cro;
  5177. }finally {
  5178. SqlSession.close();
  5179. }
  5180. cro.setV_errCode(1);
  5181. cro.setV_errMsg("发送成功");
  5182. return cro;
  5183. }
  5184. //激光中间表
  5185. public String qcmJg(HashMap parmas){
  5186. String sql =" insert into qcm_jhy_sample_consign_jg (specimen_no, batch_no, pline_code) "
  5187. +" values ('"+parmas.get("SPECIMEN_NO")+"', '"+parmas.get("BATCH_NO")+"', '"+parmas.get("PLINE_CODE")+"') ";
  5188. return sql;
  5189. }
  5190. }