From 4ff3e8115424151a767981feac8f93241caf5ee6 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Fri, 28 Feb 2025 09:17:25 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E6=B3=A8=E9=87=8A=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acs/nladmin-system/doc/wms.xls | Bin 295936 -> 0 bytes ...裕家居LMS系统.postman_collection.json | 489 ------------------ .../agv/server/impl/MagicAgvServiceImpl.java | 4 +- .../server/impl/XianGongAgvServiceImpl.java | 4 - .../agv/server/impl/ZheDaAgvServiceImpl.java | 3 +- .../agv/ndcone/AgvNdcOneDeviceDriver.java | 32 +- .../BaoshijianSiteDeviceDriver.java | 2 +- .../tianneng/site/SiteDeviceDriver.java | 2 +- .../nl/quartz/task/QueryZDAgvTaskStatus.java | 2 +- .../org/nl/quartz/task/SyncDeviceStatus.java | 2 +- .../src/main/resources/logback-spring.xml | 8 +- .../acs/controller/AcsToWmsController.java | 1 - .../task_manage/task/tasks/kj/KJQKTask.java | 90 ++-- .../task_manage/task/tasks/tbx/TBXQKTask.java | 84 +-- 14 files changed, 156 insertions(+), 567 deletions(-) delete mode 100644 acs/nladmin-system/doc/wms.xls delete mode 100644 acs/nladmin-system/doc/永裕家居LMS系统.postman_collection.json diff --git a/acs/nladmin-system/doc/wms.xls b/acs/nladmin-system/doc/wms.xls deleted file mode 100644 index b03532edec6ba865c1794a2e1f4a1667584acb4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295936 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≶}^AQsmSkvYgtLga(+~(xM}yBBL} zkVL0;ae9Mt6KY3>Q@ekp1=V!9Q)|B5g4&eq)VgIe)bw>u?WZ!Q)?=bmJ5t6_&m%{t zwvhb|oWM}OW;(SU$n`v+X;uR)tvIHy`>E{hIhX<&g9*{$8kc;}(oIYCIiiCO2Tc_< zz%~owNB^QVM-(sI!m{3=X;eI? zq$gLF9*otg{PRa8w2KW|c|0Mwd_mHNtXoz_#c#?D$_h;MS;Lnn)Ezxx5rR zHt}%!)sY=buPpV6a!b?^5*?bX#kOUf^$PS)xG8bPgewV-D3UTH@#1v;%@H+WTK@l>K;2|MqqhJ?BuaQCXIK3WW^)zj@2m_mdSO(Yi7ob2IV@J;PULn z-KU>lN>X=^&ChJGlD-9(FCW>ow0c_h$n3=fG2u8|yX>M8ayqvz^qOwKxFn>+#B)AW zo172TdV`gFR}eQHyReM&l=*bfWIjK|-RyGnAs#x$&Z9F*A2E~ag zvBMYB-@5T+Z=}&Gu?x$1En2CUC035L^7y?BOEcg)W5)2sW;^JD{7BQwl0TYUHIZ!R z#lk;FMr4()E%s96Ox`JCk{OSpjYuvbQ441t) za?P^DfcWgi)H&XMqp!q*@(oSvQ`Q5pcOhBJgoHE^& zT9j9iUy|*tqy_qLiMqD&M~0MX4Gq)U<}`s>!R0(7+VLEP1^9OO+nJG9Lz3zM^lgGs zbQI%M36JY)L11WX3^I{RoSvOB8iX8fg1T{>d~*2O6qsU@zGoIDqXzGbOJtVTL?ZUfzjyAI*F zZD!SjTLaP9+rl-_4y(@0M(*nyAu@)br4Z`YGqSg=JMrc9h zA!gzqr-qB_{_5kDjn~iD(jT^DJ={;$P1ZR9xx=Q5*TCd9I?I^zfS_qR8psHqBMU?x>g3?rWTZ*3REpT87m{KGHoxKy9?*y%K zv3X5UXU-giE&`FjU-8Phvlv#Co|2A!-IZU0_^HG-jV|fA1!=I4+=Bcp!c?`kn+plA zXNS!uos#vF-Sd7yOG`;DDM?Mw&I2N6@76)oJv-HWYfd}V(IJl z_)5$7Uvm1?r)+_A~v%6ADAdI}XOI9<4o;#eA^&>asF+b3>|zwF}pg=Kxyg0e`w z@GRg%DLg>ioSHE?rFeRAMov0tDO#p*A$u{Jl6X>>T9le6p1qk+ z2;pI{>{)uYE2A{mRU{tLCX4LFf@Lb^Eef*mgr+RcyH2EJFNQr*vaF(<4B)dD_sph1 zAbT;ImyS=#%yH%FPwU3hb1Y!EpB5D5rP3@%+t`}n~vC7a=ezc^joURpr9 zU=~MDDfU6R=_?JFp)5XL#uq+d77uB}jIa7&7hlPs&n;O=(=7Uc2-1^=`N#@*eHc|q z^P^>$;*`An)I1z?6O8_q(4nB$fNe<@p&=t66EJ-UYxs%c@_O31-Qi}sd+dq z#hU$cErf!0O|uW*X;MXRw|euWfq4m9AK!Tth)^}Cd|BdDHc$#Ir{UoFtS^=ZmA8nU zIZHP4Ka$a77->oMd_=Y~Ke(J**T*Z`XVSC)nf~7^X*l2B4L>0(ZhE}4=qvOTEINKKpT^U~E4`OTm`& zeh3o=;oAu8@XJAuSfYhSQQ^!C{M-zv$CV!&iqWgmLt1i}a#}+*hEp>qHk=yzk83ce zHY_tY$xSnq9v(Z^tWWlmdiIK`Bh{r2b})}ujQA+Sg^>np$!76!&KD^jdk(Go^n}MN zU_?)29yy87agi%8wFm)>m7k#|lkYdnA@sna07MUR@=BU0NltM}X|W3~!d?`kj%mh8 zW?r(H};yMY6p+1cIm z^12rn`|_HknctUU`XvRF%*2UeR+A6bZ7Mr8KO@(blAfDdj5FBmW)^l>8jig~C2^?Hb&%T?#Exu0Lu(WOQgbTvXZ>u_lP&Usk@X<0o8e6@% zAtSfWVY39nyBco9pzTskw++Im5anoRK%<$rLYgH)&xb7D+}wNLI`gZYHz}PcK3wS zY&0roA({X^R&{@MxVq@E=dL*(L)0vE&IRb6?VYozwcLVqb&ZHXt*`*m0cNPY=)vSH zDh$g^nDyyiVv{1oBv^ksGugsa#%pGOW9cy-P&skV@ z*;RjpoQ;s90m!l!)9_m+5Q->CO+)KZnPrg3%-}!^0W?w}PCd1zPIKi2@`la1W!l1v zKou`60;^k-&PAaa%=J)*#`-U^5z#nuitcx*lr6fQ!HRCjp+{wG`cDt%jUYv3T_Q7j z_d=B!2HLdBNi#3PPDBWiC&njkh0TYFEC4J5w8jGCDu<@sf$w($76X<5?gA_YECVbD z+znU(SP7t4Z|(uC2HXo+1E4qQ?gOj?+z(g}cmP1ZqWU0UBj6#x!+=eIM*xok9s_I! zYyoTqYy&(FcmnVrz>|ROfTsXY19kwO0qg`k3wRE&3-CN(H{b=pi-4B^F9Tiyyb9O@ zcn$D6;0?f=fVTi|1Kt6=3)l;I53mpLKHvkue!v01LBJuvVZafM78gK@17Vrh&9N-_#W^B;77nufD3?& zfJ=a%0lxzN#tUM<;d&Wx1@JrI55QHxpMbvre*^vjlmieB;DZTqnm%ir#lqbvT3-Em zJbe$)G#;V{(L{|1$Bll~H1*=PCJi&Re6(AFPzLJ%DHw}R*9w8NcY31KV{Ah{p=-<}qdUZqTFz69H;W3UdU=YO1=Ul%r%j#iDpEZc z4*vX7>dvdg(s-M+LNj8r7&Ukuxck!-*R;ai)EqX=VzvztzJ3@R6IVQ8^#qzpl6eU& z6G`id;mhU6VOj{U#EJwNk=UW&4mwg$BL!LpFm-W6i=2Td_8Utm1MJce#b&#MB-2xn zQsl296&=`&8DrBvE(;iYCV~1%Rq?}k%eax!>FWS;$*Sn~&+Cc0EJV^RZ5mL}b*QYQ zV-4NSt)rZysBT?{D$_BMknU6@A_^idn0%G$!1NG{2A&^ciq!K%%!5h~MW^X5TPK;K zvOdh>G(2iSX%u5D5iI89rxX-rps^LZrpVlc)w@Qno-kwG3LKknb#mhIRS%Ed8MyKa zOQx$b5PEivoH2v^n<^7Qa@7lo@a+YqB`F?rGSPS`F7G2mRAnBPi6Kz2BH+TgguLz3 z(A_?iH74JTc}cVD5kV-Ar9Vuv2cg0rV%A8X)lt^L`SGI?R1ue`gQ*2YlX^fWsN|Q&&K3IYrW=!IksGH`5-FR zqw{8Lnkr^sO3a{?7%_zEpIYpSG>xZfi*60l3pHWDSyaMwCF@CqA?WpVT33FCl2ULb zS+AF?iPjTWlWnPHpWxH^q!7$I-{s24D=2f(`x>fwUYr#{!5Lpsr5(Ky8Hcemmcl~g zPBL9FPjYIsGmh^wQpr$Fs1s9LX{m^3)T4J%kUB}fI8bhgS{+U&*eKWIi+nMJtvv zDO-f*1q!6iAFxN%ufS5ZRAPILNN)m3imt4a5}r}8H69oOX=mQd`AaD7GpI6L#p!rf zIdWSnx{yGI z6(k;FaG#TjNk!737Oi9T?u=TyW9yuo;>kE!sdMT5i8|aVHYh*8z=b%uP&?zwm`rmk zq{qvyo3r!NsT5TIbk-4M(%UA6hrAtPzm=|dUFj%0k?AQzI4QPAP}!Nb^?80ajZ&OX z1sbKrww~A`emm)%q7>3Q+Kv|c>m0{4)Kx(~pIilQnT{)&TEONy*%p|1oYq8p*m&cj z8E>r!E0}@+V_2F>5zJpr-ZBAF(vF5k&OGd#Y3vkFXwyS5_V$VCT-p}|Rz8}Ql z2bc8Y^;;%XbtlPoDWsMk=B?XI{3HY0UQ(s2l-*A+05RSFc7d!34N#P&o>0R!r2;EJb4-O5pc5Ia4Z|)APDQSR$cPX&BQTW>r_BIHAhhm$@ zU>qJ5X<$+?!I6O}4UyMVEBh#WHiUw_5@+NTveu|_^nyq3$lnt>mwvuft|QT%q!$zw zrj%geRZ#~f4zy?2&Ou1Qc!=G;6b8wJVnW*35$u!+guU=yT{W5r;Z0h1i{uOS=IyCh zVm?6cEaVKuq_*B$$&VZI>}WdJlm8fi9fQS~geqX01dHH5Xn|BU9RS7nh8a0 zy*LL(ta1)bbh~(#n#%+%` zeU;@IQy!-Ft!kAX8n7x?gH&##c55>RV`kIFdBirev=R#YRTHv$Gg}`w4Ylo|8>9oC zb}Sv0Lfr*Avf>iVI2O4ePzL-1;)dyI&F~JBP-I~`txqDAbwPvGtGGWA9*Z1i81`IW?!&J$7RZvv5p>ML7jUIrbIpy4*3bc?isVP{%R?K}`%gmHsTa83Tt@gnb%u_)BxLMT+_H z*7~F`4Myz#jfR{lV3`WImL*}^0Z%W%Eyx^)*K0fD8}0Ov)oE6Clug;)?IIRq38fe!X0T0{&9l0}diHlMZ=F;%mUioqD)Gj6R_mmj@$z96g%~25qeicq_7gshBz$`gO=#Pl zq}aUB!CpW%|I8e-sw*)<2F#Wrs=!(JHXRwAAzw|zJHV0>g=5F$huEiVp3wv`cQa9% z*29)mENbw+ROTzRLbJ%KRZ3wt?m1-D?t#|4X&HlcKEH!E8T29N2)Iugc;*WCLuX~C zV#7`b{*rSFjf!OJn%p^Ycj`e9d9OqU!*g z#)ML6cb#hLu_p%i!z=Di=xxaa42(zS)6?K`@{2Sw*qnaO)*Z7Ycd^8d2^-T?e={wF&*jpJ7}*GoLSo`6 zdZP*?ua|K|h-`V&cpoo62TaWP>qzivz3d%k$7@ zJ}q<83ul&vq`tQN1g8hr)k&g3i=2`0J9J6``5skhC`hV!A*rLQ*u7z(7z)fr-Fe

{UCXuLUN%g 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�OSN~W*Ie+7q}N>V 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

QC3z_&WI+J6ar)I$R{&MIx&%aGKJ)l95R7e zh#3awc8?)2#QePFe{ZK;JWa?Q;64hEBIr~VAN{v}CI80r7r>JWamv5}igkFIu&)l}}lO^NM{WBH!zxX%e3)>=*U$XM8F%4zKY-o`D$1t_^1Ww%U~hSD9^T2lFyeCW7;rM^ zBKzJOsu;yraZHVq$unSl6}-G>W>mkrk-6fWFtxmfqv$b_(Re0g>SdVF#GCk39$w|a z_`<&U>dSZIn}n-uZfE>29ngO+D}Vj77JG@CwBRU6f@rjYfi-Q%H2C*QBsU!J|s!`%29Z3mE&yVOshwKhEdoBTUzv!4m;sh2HG`m zR^ct&N@+L9u$l!0P>q<>0T`%<&;Vftgq09hL0Ao84TQB29)Pe8!g>fBAUp^GsjNmg zZ-Vd;gohz)hOh;~BM=^i@EC;0Av^&A^KbQ>pM-N0gk}gW5b)l1IPdVppMvu)2)iLX z4Pg(2XCOQa;W-G;L)Z(U6~aCUSRTUxh#!RTB7{Q_UV`v41iW_`&aXiDv*)@E&MpY; z5RO1N3ZVnSYY<+C@CJlq5ROB56T({%u$~j1GerNNI6N}nVn2ja-U-W_)jkfhQOfjw z1#u&QGKN9f=645Ru01;?|m_mi!ChG%pUHEY3F!jx_oa;Z-tlu)IX&kT|nT~ zJ3)bajBDZw0;C*&8Ye3!3?;)bYUdWN5+N{;3Q)jV9W@!(Eg%_A%4t8g7Rr-cps!j0 z3^D{ofW~fIK3s0Y7ehE$+#l|0mcIup56NVlYd5~oQ8Yz{k`$VTWj}@%K&7cP1GwkL zoP3HOHE`rU3N)bDl=hx*;_5j2*Gg?g@iRwAT_06q+b z)>7nt`2D|olmJD{0=-y4${_}u;(;{oJ1Fuk8A)alppOao!UENY8mP-;_{{)5Pft=H zC7p|Df$p+E%tUm+)d4Nb<;A<;y9+o(J){}PD9CjmiG<$-NQ;DeBH{jMc!HOTb3oh# zG-Vl3mE{nSVy_}L_(kdt?^VJds97Mz2G`k;UI?*Lh=WfrC|3zFq=+qW&V`g>h#`$y z4bQZbB@mDFq_e$uer*H@8DxRi2#1UN1ws>`F5UOX(D04}AxjWVk%16GAU*`np%D1_ z;pH0%`8f-j6A{#O(KZ4SUh7oJ^9LWwvONW=(SD z=o80r#|q*{0aXSa z+~q_{+Cg+qh7wrS8G3`(Vliq|7Iktar8Y6DWWuP_+9crq&H4;=db%ErYQXPV&dj`7 zM;yYu%t=~xc69o%OxBhE_J~9>hA1^@E|Rg3UQl1=OPLp{)t}xMsZL)Q>GE}wCk^w| z@JQ)e7cqrcNP33JoM|?zXfx5M^rJKy6-h}pXR4CZP2f`vyvS+P27xi;^|eTxI%W}# zUX!AqWrBHubnvWfm=LzoSsYtB%d!MWu;heQYG)yxoM2y4w5CWLoa$0K$@v5eD4@HB zC{`xW*7YHid=60WnsvGM;whG*l4?OouItg_AYyU-xy0C}Bg-3{ejO9EdV^-vnyiIW zUeP3I&96*+e8YxW)~bq%>RAnq#z%8qmQ2`RIjtbs834X-0$6iJd3Dv;iqfKvBP1i;0P84OouSgFz!FjEwHk{GR!)*hWl$Sn$)sq(5#A_`?|qT4hX_Eu zUj~Z-$kZy3@ExfN(9KA<%-RuCppD)T;`BGd{In$ylIuE3Wl~+lpMFA|K?YnPOWqq? z-w|=j3?g~>3c5&h1$Yh|@|95gqwqvUpsx9q zvcTs%7X(uKY6{qtGB$-(>=M9f264-6>bJj>Yrm9h4WDr*x4a(}&zQf=iW5jhy zNId2PCTsg_pf9H41%C)~FZyiScrxIR7lEXi_|jC^4^JAY#(a=pymj*JPY4Nsd=dft zY@!Ae5<@Ro{j?F!gbo5I3hjh|w9+aiA#dA&Vgkg&NZ?U$W48dG&mRbBXu?un7~Utf(*x|w z1Ssv5$Muihj?^v^AUY4jQ+i?e6b^sP<=}N00eJ;LT@S61Ds|72F(MQUIk@~JkZ?KdmaVP)p)KffKd`)V6)*b5}-cfiy96auz&$f8TFLN4-G4M%i1Bcw`Y_(Fjn>V^BnQT(m}|Km zdXM8(0X>)n5}&?w4dC8c@MiCX@dh^y@Jx(b;JG)e(E`}85XKmc1fhRPkXsG098y5$ zLn`Q@;VK)RSO8DMx3Tn^aeAefGUz|6bWlhCxzsnmZf{m;xmNTaClI;8oGF6dF6L$u zNZ#NKUd>=O>41uu#a-cjoNHLV8e#>|XAsCi-|?;2KpM`!zIWcgD>1!qTnlq46X+Wd z%EA0Lb5u+^q#!+`fiw+A?WDtf3#>!FpMaF$4(8W;(zP6ogDpwE?Kl3PtdAUMVJ5f* z#dprnfJv}|a^U&im2tDT-+$ixJMaJFe(yg6`fh-+w{R^`!7u6s5WeuEhU1s)$$_J$ zh1rHV%-oo%VN}y0hLqvW-hUS895SFkGoe@bwy%HxnJ~Li6Y=Z)^~wjqrq}b7+nwta z*g1M3D3B-67BJz2-kIS~1%Yor(!)sKY9K9z>l^kz8S>){!BQG1gX4iz^v(O)p921;i8~-}jpzxIT~v zFhGyM6);@!fBj>(2OnRW0Sr_OS2~WXzc!!SeG!Fcc;Hg_9*8jTnhjG1=w|>| z;KCP>C(z4qMtT{mMF4nxwWH`;mvOtF_vjOmxgNQm*K~?|sD3PpvRR#8n z1-!sX!&S()?An)-NZ%~C+x=V^-@+wWE%FW5j+=q2aMVp&_}w)vG(fp16nnza*w;d2 z$SJB761=SW?VPcK+sXIekO!yq?`a3lgx{0@R(bJ#-RjanT6XoZ1AQ}_)L}c^StNB zHy!vh{UB@SRFIhe+|xh3H6ifn^k?pW5@I~`@9!s&fKy|Ye|of#$>KNc%B07cEYoO!K4-u5%ug? zjMo#!sUU6uEogcqWH{N0GY+M_pn1P?0mQh>%#w0VQv3a$s7@=c^+c2OOCTy>CfN%2 zzW}mZERytGq$f7&d5Fm{ZAulVzkjt2q`HJt%-bKfVw_Wx+k9y2}3Lp z5)jOwTxJ#1D-G8D1Ej%H?lwj8Eg+Dt0l{;~hd1b;K!Jq*t1q=f_FjdiCiZ=38>k>F z7W;p9LlG@s zIe~QTW{{ry@K>BqX-mx-92xF5en}wvffxI(?}F>sO;!@jphs=*hXuUf6_|G74Axaa z{<8!1&;C#aiY{<++)iz^km(pq6g()PfRVSV^l*-R>h1pq!t?RDfl%ajpZ^EQYx6up zz)5>EIUW^0MsfQO_T+@;_b%ewef}SzY!t3mIIgw2SPUca`;H*!e-IP_anEh{e;edQ z-5DP1?#as`KsuNxp%bsYGNdm+w1o1bo5_s$GQ&YY1yXAW;Wdha9Bu@`6d%TLNL~Eg z{^e^RPoK<5;CUv?mB)5tdDIVRxso920$G&z**7oCKO5gUmPI}VcKeWQuKdZc-+p!| z_iP!Izr${yIzLyxp?2==JU56dhkYT9KTiFl=(pObAQ6xi7e&GF8}q&k>8q69@dzOi z6c1P79XyN6W67O_+;4=)P2_g`J3#A`-ZJt3f`)m=%>c#VvRBT>=MRPaMkge5?-{0` z(_2PEV#nP2IV>mB915CYlr7e+#Zh0eD0|J7JPW+5T{xF-*+y?!5my#Vw%VV(^UHOg z6I1Zn$<&~`pJs5m(7l z?{IExAfFR~1CFBvK5*zY8^N)5;SIv)gZ?>v;0oIyg?yZv8ru2eplj>He7JD1Z!*Zo zX||!R*?={#ZzJdd<;Wrig;FDqvoD$117m}4Wy{O zyn4L7WbV9b%!PS0n&c!yzq{FX=qz{OU48#s(<&imK=J7Sreq zDg0f|LTY;DlnMu!@ImvqN5Tf8w|+Qt`fTU>r%!iqmEf+$tn%WD8TP8)O7wdCUJLk4 zxaH^((w`o_rOX4&G`-_+6P}*%rhqztw0+VSPhwKPL|7Dj&Xj(MFx&V5xmVv zzeL2SHy&9Tsmf&;7K=fvFgnJH?OC3(~+&lJi`x^4==gadmnbE(bY zfZYO~nbPkuTpx7TJfOD;+`Xj4Yw6D$`}bQZ3ZOp`Ed)cj*&4iA`JIpmWDj>-`}|T6 zaQ(gm=-=N>f4=~az{!9IN@Evsf;L{8hdQeY0>t2L9$^36YyW$@{ofCDukwI1Fgpd> z2X&jgjw}nbRmIQ(w4k`TzUkVA#dw|%*!{N0|4)#&%TrDN$#?DCNcoj{qy3e8hHLJj zg<`6*k9CJtFy3BTiN+1Ey9ig08j=8NH~_c+4N?il@8FkAr%hGrQgm9a78V9%Fi#qn zs!Y-)X-19GXfsRzSNjEASyR$em1dJUIl}_xBzjnOT!1^{%utg?r_&nrN!la~=_!yb zm)$eI!hxS*sRpkK0JIQz&6dl0$3v64OqZJ^byb7rGa1Hr+uyAc=PioRlQ&Vo5s=aBd;rdk1 zM7zZat(E{9++ZWcXAitZdS7LaP+BDIICS2Z`dhIr)VANs@?UU&Gqe)H#2K-a3K|(p zNeFyZ&IaJ36qJ~}R^Y#&mA{7Ff4h0V0COzk=D@XivEN-QoBsJj&OF64nG9K@bhk&>TD19z%7Mzh}Eroz&`3eX~b~i#mvU)3o0T6aWz*)B&a1hG(v5ump zi@7+~?fUAB>);Xoo&v7>Xh?3Q5+kHJ(?ica`%4GK#qEC%`CfH|kIOFm<6aLBdV`$5 ze%z}6*gpE~iL+Z1hAJL@6#5_k!}A%CCcG|fD-6V)5P&=2#stR#$^1JZ02k6b7D(J; zUzS6_F~G4w5?lxzD%wCI4zdI8ss5e#DEZ&Ozpuh`Io=b_)PFAj``!5eZFp`8g#W1n z@xJ%?pQ`is)Z=|No_|j{%)1@}u8qwQaIGZ4TxG4=-e>@c2`ob8l zGd!+8hrwjSvcUS1Ll=(zotvO1I}RRv>)_EV+y#0-L`P8E#epA>eBQAgE|8_)_vKqx z-u;aW#5-v2eILBT!OLiLN{Db za7mIq<70#~jzu<{5q{tr#J*O-8S#-5&RFYuI3rAX49>Vl4|uNe$;dM2n~KI)6z19& zmDm@Xmll@Vvog4Pk+sjal-Wv3VY@EJoZ?gPP36NT!Fd%`+&%7*Nc#0p%mCM{rM9I= zd2vk%#rv=eb5Th}jpHVd!)79@oX@ucK7ur@qN3D+%8l}z@okRhNks+41(?6T{D76R8WQ!55ug cQe2$OiQhToz`JWqNG88ij=(?i|NQU&0?Nb8#Q*>R diff --git a/acs/nladmin-system/doc/永裕家居LMS系统.postman_collection.json b/acs/nladmin-system/doc/永裕家居LMS系统.postman_collection.json deleted file mode 100644 index 99857f1..0000000 --- a/acs/nladmin-system/doc/永裕家居LMS系统.postman_collection.json +++ /dev/null @@ -1,489 +0,0 @@ -{ - "info": { - "_postman_id": "584232a7-9ae4-4ca2-b4e5-d9e66870957e", - "name": "永裕家居LMS系统", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "示例", - "description": "", - "item": [ - { - "name": "LMS登录", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "56672d9d-9bac-4f23-b77e-809647ef5df4", - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "id": "48d9e766-7014-4243-80de-81d63be07da5", - "type": "text/javascript", - "exec": [ - "//postman使用:https://blog.csdn.net/wangyiyan315/article/details/122441791", - "", - "var JsonData = JSON.parse(responseBody); //定义一个变量,并且将请求返回的内容赋给该变量", - "pm.globals.set(\"lms_token\", JsonData.token.slice(7)); //7代表去掉token前面的Bearer加空格", - "" - ] - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\n\t\"username\":\"admin\",\n\t\"password\":\"uefvHbyUCADkudW1MV+/yw9XBWR2Z+KDyq+dqQ+ozr1loClUgqm4XQPsUl87IsXetYBWRDLo7HC++20VHlW80g==\"\n}" - }, - "url": { - "raw": "{{lms_url}}/mobile/auth/login", - "host": [ - "{{lms_url}}" - ], - "path": [ - "mobile", - "auth", - "login" - ] - }, - "description": "LMS登录并设置返回的token" - }, - "response": [] - }, - { - "name": "系统参数分页查询-示例", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "/api/param" - }, - "url": { - "raw": "{{lms_url}}/api/param?sort=id,desc&size=10&page=0", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param" - ], - "query": [ - { - "key": "sort", - "value": "id,desc" - }, - { - "key": "size", - "value": "10" - }, - { - "key": "page", - "value": "0" - }, - { - "key": null, - "value": null - }, - { - "key": null, - "value": null - } - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - }, - { - "name": "根据编码获取值-示例", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "IS_CONNECT_ACS" - }, - "url": { - "raw": "{{lms_url}}/api/param/getValueByCode", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param", - "getValueByCode" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - }, - { - "name": "删除参数-示例", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[\"0c1d96d335cd4dd6aa0a4bee4b1c45fe\"]" - }, - "url": { - "raw": "{{lms_url}}/api/param", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - }, - { - "name": "新增参数-示例", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\":\"test22\",\"is_active\":\"1\",\"remark\":\"test11\",\"name\":\"test11\",\"value\":\"test11\"}" - }, - "url": { - "raw": "{{lms_url}}/api/param", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - }, - { - "name": "修改参数-示例", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\":\"test22\",\"is_active\":\"8\",\"create_time\":\"2022-10-14 13:33:52\",\"remark\":\"888\",\"update_time\":\"2022-10-14 13:33:52\",\"update_optname\":\"管理员\",\"create_id\":1,\"name\":\"888\",\"id\":\"3f1901b5814d40908bad602854b22aa6\",\"value\":\"8888\",\"update_id\":1,\"create_name\":\"管理员\"}" - }, - "url": { - "raw": "{{lms_url}}/api/param", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - } - ] - }, - { - "name": "ACS请求LMS", - "description": "", - "item": [ - { - "name": "共挤线申请空盘", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"type\":\"1\",\"point_code\":\"GJX01_K\",\"vehicle_code\":\"001\",\"qty\":\"100\",\"vehicle_type\":\"01\",\"vehicle_num\":\"1\"}" - }, - "url": { - "raw": "{{lms_url}}/api/wms/task/apply", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "wms", - "task", - "apply" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - }, - { - "name": "油漆线空盘入库", - "event": [ - { - "listen": "prerequest", - "script": { - "id": "4f07b550-ab9c-41a4-8dbf-f889ae50b246", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{lms_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\":\"test22\",\"is_active\":\"1\",\"remark\":\"test11\",\"name\":\"test11\",\"value\":\"test11\"}" - }, - "url": { - "raw": "{{lms_url}}/api/param", - "host": [ - "{{lms_url}}" - ], - "path": [ - "api", - "param" - ] - }, - "description": "求方法参数:{\"whereJson\":{\"sort\":\"id,desc\",\"size\":\"10\",\"page\":\"0\"}}" - }, - "response": [] - } - ] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "id": "32f60779-6a66-4d77-80e3-1bc0040e7650", - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "id": "fb339152-4984-49bb-8955-3e24baac67ae", - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "id": "9b318f5e-373b-4f36-93a5-d131f4f76446", - "key": "lms_url", - "value": "http://localhost:8010", - "type": "string", - "description": "" - }, - { - "id": "5557e8ff-f6ac-45b0-a950-4a8c139d1ae0", - "key": "acs_url", - "value": "http://localhost:8010", - "type": "string", - "description": "" - } - ] -} \ No newline at end of file diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java index 9b2a944..7cab33a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java @@ -66,7 +66,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 .execute(); - log.info("查询agv指令数据:" + result.body()); + //log.info("查询agv指令数据:" + result.body()); return result; } else { return null; @@ -293,7 +293,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 .execute(); - log.info("查询agv状态数据:{}", result.body()); + //log.info("查询agv状态数据:{}", result.body()); if (result.getStatus() == 200) { JSONArray ja = (JSONArray) JSONArray.parse(result.body()); for (int i = 0; i < ja.size(); i++) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index c7b6636..e43e03c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -128,8 +128,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { HttpResponse result2 = HttpRequest.get(agvurl2) .timeout(20000)//超时,毫秒 .execute(); - - System.out.println("查询agv状态数据:" + result.body()); if (result.getStatus() == 200) { JSONArray ja = (JSONArray) JSONArray.parse(result.body()); @@ -181,8 +179,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 .execute(); - System.out.println("查询agv指令数据:" + result.body()); - return result; } else { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java index 3371d34..a2b0e7f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java @@ -113,7 +113,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { .body(String.valueOf(new JSONObject()))//表单内容 .timeout(20000)//超时,毫秒 .execute(); - log.info("查询agv指令数据:" + result.body()); + // log.info("查询agv指令数据:" + result.body()); return result; } else { return null; @@ -138,7 +138,6 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { .timeout(20000)//超时,毫秒 .execute(); log.info("查询agv设备数据:" + result.body()); - return result; } else { return null; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 184f23b..c3a5703 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -202,7 +202,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic device = deviceAppService.findDeviceByCode(device_code); if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) { log.info("起点设备名称是{}",device_code); - // acsToWmsService.ghsmlqhfinish(task); + //acsToWmsService.ghsmlqhfinish(task); } if (ObjectUtil.isEmpty(device_code)) { log.info(agvaddr + "对应设备号为空!"); @@ -215,10 +215,25 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //输送线对接,增加取货完成写入确认信号10 try { siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + log.error("tofix子母车取货完成,离开,写入{}输送线信号:10成功!", siteDeviceDriver.getDeviceCode()); } catch (Exception e) { for (int i = 0; i < 15; i++) { try { siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + siteDeviceDriver.writing(10); + log.error("tofix子母车取货完成,离开,写入{}输送线信号:10失败,再次写入,成功!{}{}", siteDeviceDriver.getDeviceCode(), e, e.getMessage()); return; } catch (Exception e1) { log.error("tofix子母车取货完成,离开,写入{}输送线信号:10失败:{}{}", siteDeviceDriver.getDeviceCode(), e, e.getMessage()); @@ -309,10 +324,25 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic SiteDeviceDriver siteDeviceDriver = (SiteDeviceDriver) device.getDeviceDriver(); try { siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + log.error("tofix子母车放货完成,离开,写入{}输送线信号:12成功!", siteDeviceDriver.getDeviceCode()); } catch (Exception e) { for (int i = 0; i < 15; i++) { try { siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + siteDeviceDriver.writing(12); + log.error("tofix子母车放货完成,离开,写入{}输送线信号:12失败,再次写入,成功!{}{}", siteDeviceDriver.getDeviceCode(), e, e.getMessage()); return; } catch (Exception e1) { log.error("tofix子母车放货完成,离开,写入{}输送线信号:12失败:{}{}", siteDeviceDriver.getDeviceCode(), e, e.getMessage()); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/baoshijian/BaoshijianSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/baoshijian/BaoshijianSiteDeviceDriver.java index 48bf290..5ca139c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/baoshijian/BaoshijianSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/baoshijian/BaoshijianSiteDeviceDriver.java @@ -218,7 +218,7 @@ public class BaoshijianSiteDeviceDriver extends AbstractOpcDeviceDriver implemen this.writing("x5", 0); this.writing("x7", 0); } else if (x2 != last_x2 && x2 == 1 && !out && x5==0 && x7==0) { - //DJW02申请空盘 + //DJW02申请上空架 mode2 = 1; out = false; JSONObject jsonObject = new JSONObject(); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java index 98116c2..227aed8 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java @@ -216,7 +216,7 @@ public class SiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceD case 2: break; case 5: - //输送线申请空盘 + //输送线申请上空架 if (move == 0 && !requireSucess) { log.info("tofix输送线SiteDeviceDriver:" + device_code + "信号为" + mode + ":" + move + ":" + requireSucess + ",满足请求条件,发出请求空架任务"); apply(5); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java index af30e76..5e90f86 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/QueryZDAgvTaskStatus.java @@ -37,7 +37,7 @@ public class QueryZDAgvTaskStatus { public void run() throws Exception { try { - log.info("自动线程开始查询浙大AGV任务状态"); + //log.info("自动线程开始查询浙大AGV任务状态"); HttpResponse response2 = agvService.queryAgvInstStatus("1"); //查询AGV指令列表 JSONArray inst_rows2 = JSONArray.parseArray(response2.body()); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java index 8ac4712..5157383 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/quartz/task/SyncDeviceStatus.java @@ -55,7 +55,7 @@ public class SyncDeviceStatus { private void rgv() { try { - log.info("自动线程开始查询浙大RGV设备状态"); + // log.info("自动线程开始查询RGV设备状态"); HttpResponse response = agvService.queryAgvDeviceStatus("1"); JSONArray jsonArray = JSONArray.parseArray(response.body()); //查询RGV指令列表 diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index a9eb630..366d5a4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/acs/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -14,10 +14,10 @@ https://juejin.cn/post/6844903775631572999 - - - - + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index a681f87..44789ca 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -46,7 +46,6 @@ public class AcsToWmsController { //@SaCheckPermission("@el.check('schBaseTask:add')") @SaIgnore public ResponseEntity apply(@RequestBody JSONObject param) { - String device_code = param.getString("device_code"); BaseResponse response = LockUtils.lock( device_code, diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/kj/KJQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/kj/KJQKTask.java index 478bdcd..abde229 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/kj/KJQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/kj/KJQKTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; @@ -21,11 +22,15 @@ import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.Arrays; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -45,49 +50,72 @@ public class KJQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; + + @Resource + private RedissonClient redissonClient; + @Override protected void create() throws BadRequestException { } @Override + @SneakyThrows protected void createCompletion(SchBaseTask task) { - - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - // 根据对接位查找对应的载具类型 - SchBasePoint endPoint = pointService.getById(task.getPoint_code2()); - log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + ",点位状态为:"+endPoint.getPoint_status()); - if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) { - log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); - throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); + RLock lock = redissonClient.getLock(TASK_CONFIG_CODE); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + // 寻找出料中,并且出口没有锁住的点位 + try { + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + TaskUtils.setUpdateByAcs(task); + List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + .collect(Collectors.toList()); + // 找起点 + String requestParam = task.getRequest_param(); + JSONObject extGroupData = JSONObject.parseObject(requestParam); + // 根据对接位查找对应的载具类型 + SchBasePoint endPoint = pointService.getById(task.getPoint_code2()); + log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + ",点位状态为:" + endPoint.getPoint_status()); + if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) { + log.error("tofix__KJQKTask_目标点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); + throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请KJQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); + } + extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type()); + SchBasePoint point = findStartPoint(startRegionStr, extGroupData); + if (ObjectUtil.isEmpty(point)) { + log.error("tofix__KJQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务"); + throw new BadRequestException("点位:" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务"); + } + // 设置终点并修改创建成功状态 + task.setPoint_code1(point.getPoint_code()); + task.setVehicle_type(endPoint.getCan_vehicle_type()); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + } catch (Exception e) { + log.error("{}KJQKTask创建任务失败{}{}", this.TASK_CONFIG_CODE, e, e.getMessage()); + } + } else { + log.info("KJQKTask任务正在创建被锁住。"); + } + } finally { + if (tryLock) { + lock.unlock(); + } } - extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type()); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - log.error("tofix__KJQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务"); - throw new BadRequestException("点位:" + endPoint.getPoint_code() + "未找到取空架起点!请检查ZCSSX010107,ZCSSX010207点位状态是否为2有货,或这些起点已存在未完成的KJQKTask任务"); - } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setVehicle_type(endPoint.getCan_vehicle_type()); - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); } + /** * 从空架暂存位获取 + * * @param startRegionStr * @param extGroupData * @return diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXQKTask.java index 2032c59..1871d53 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXQKTask.java @@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task.tasks.tbx; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; @@ -21,12 +22,16 @@ import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.Arrays; import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -46,6 +51,9 @@ public class TBXQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; + @Resource + private RedissonClient redissonClient; + @Override protected void create() throws BadRequestException { // 获取任务 @@ -89,37 +97,55 @@ public class TBXQKTask extends AbstractTask { } @Override + @SneakyThrows protected void createCompletion(SchBaseTask task) { - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - TaskUtils.setUpdateByAcs(task); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) - .collect(Collectors.toList()); - // 找起点 - String requestParam = task.getRequest_param(); - JSONObject extGroupData = JSONObject.parseObject(requestParam); - // 根据对接位查找对应的载具类型 - SchBasePoint endPoint = pointService.getById(task.getPoint_code2()); - // if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) { - // log.error("tofix__TBXQKTask_目标点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); - // throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); - // } - extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type()); - SchBasePoint point = findStartPoint(startRegionStr, extGroupData); - if (ObjectUtil.isEmpty(point)) { - log.error("tofix__TBXQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务"); - throw new BadRequestException("点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务"); + RLock lock = redissonClient.getLock(TASK_CONFIG_CODE); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + // 寻找出料中,并且出口没有锁住的点位 + try { + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + TaskUtils.setUpdateByAcs(task); + List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + .collect(Collectors.toList()); + // 找起点 + String requestParam = task.getRequest_param(); + JSONObject extGroupData = JSONObject.parseObject(requestParam); + // 根据对接位查找对应的载具类型 + SchBasePoint endPoint = pointService.getById(task.getPoint_code2()); + // if (!endPoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) { + // log.error("tofix__TBXQKTask_目标点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); + // throw new BadRequestException("点位" + endPoint.getPoint_code() + "申请TBXQKTask任务,但该点位状态为2有货,不满足任务生成条件,请核对该点位现场的实际状态!"); + // } + extGroupData.put("vehicle_type", endPoint.getCan_vehicle_type()); + SchBasePoint point = findStartPoint(startRegionStr, extGroupData); + if (ObjectUtil.isEmpty(point)) { + log.error("tofix__TBXQKTask_点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务"); + throw new BadRequestException("点位" + endPoint.getPoint_code() + "未找到取空架起点!请检查起点ZCSSX020107,ZCSSX020207,ZCSSX030107,ZCSSX030207点位状态是否为2有货,或这些起点已存在未完成的TBXQKTask任务"); + } + // 设置终点并修改创建成功状态 + task.setPoint_code1(point.getPoint_code()); + task.setVehicle_type(endPoint.getCan_vehicle_type()); + task.setRemark(""); + task.setTask_status(TaskStatus.CREATED.getCode()); + taskService.save(task); + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + } catch (Exception e) { + log.error("{}KJQKTask创建任务失败{}{}", this.TASK_CONFIG_CODE, e, e.getMessage()); + } + } else { + log.info("KJQKTask任务正在创建被锁住。"); + } + } finally { + if (tryLock) { + lock.unlock(); + } } - // 设置终点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); - task.setVehicle_type(endPoint.getCan_vehicle_type()); - task.setRemark(""); - task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.save(task); - point.setIng_task_code(task.getTask_code()); - PointUtils.setUpdateByAcs(point); - pointService.updateById(point); } /**