From 371583720b1645ba42563ed9b571602568715a42 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Wed, 21 Oct 2020 11:11:37 +0800 Subject: [PATCH] . --- .../ssjygl/devicectrl/device/LEDThread.java | 165 +++++++++--------- .../com/cowr/local/ssjygl/main/Config.java | 2 +- .../order/ordertemp/OrderTempSyncService.java | 19 +- ssjygl-xsx-local/src/main/resources/tpl.xlsx | Bin 12508 -> 12504 bytes .../src/main/resources/tpl_bill_full.xlsx | Bin 12369 -> 12355 bytes .../src/main/resources/tpl_完整版.xlsx | Bin 13404 -> 13408 bytes .../src/main/resources/tpl_结算单.xlsx | Bin 12984 -> 12965 bytes 7 files changed, 92 insertions(+), 94 deletions(-) diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/LEDThread.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/LEDThread.java index bf0b6e2..e3bdf4c 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/LEDThread.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/devicectrl/device/LEDThread.java @@ -51,7 +51,7 @@ public class LEDThread extends Device implements Runnable { } }; - private ReentrantLock lock = new ReentrantLock(); + private ReentrantLock lock = new ReentrantLock(); private ReentrantLock connlock = new ReentrantLock(); protected Socket socket; @@ -92,85 +92,83 @@ public class LEDThread extends Device implements Runnable { } public void screen() { - synchronized (lock) { - lock.lock(); - try { - if (this.license == null) { + lock.lock(); + try { + if (this.license == null) { + return; + } + + // 重连一次 + if (!isConnected()) { + connect(); + + // 重连一次后还是连不上,就等下次连上再发送内容 + if (!isConnected()) { + log.error("LED %s %s 连接失败", getId(), getIp()); return; } + } - // 重连一次 - if (!isConnected()) { - connect(); - - // 重连一次后还是连不上,就等下次连上再发送内容 - if (!isConnected()) { - log.error("LED %s %s 连接失败", getId(), getIp()); - return; - } - } - - String date = sdf.get().format(new Date()); - String dataStr = String.format(this.format, date, this.license, this.text); - byte[] data = dataStr.getBytes(Charset.forName("gb2312")); - int dataLen = data.length; - byte[] msg = new byte[frameHead.length + packetHead.length + b.length + dataLen]; - System.arraycopy(frameHead, 0, msg, 0, frameHead.length); + String date = sdf.get().format(new Date()); + String dataStr = String.format(this.format, date, this.license, this.text); + byte[] data = dataStr.getBytes(Charset.forName("gb2312")); + int dataLen = data.length; + byte[] msg = new byte[frameHead.length + packetHead.length + b.length + dataLen]; + System.arraycopy(frameHead, 0, msg, 0, frameHead.length); // System.out.println(HexDump.toHex(msg)); - packetHead[packetHead.length - 2] = (byte) (b.length + dataLen); - System.arraycopy(packetHead, 0, msg, frameHead.length, packetHead.length); + packetHead[packetHead.length - 2] = (byte) (b.length + dataLen); + System.arraycopy(packetHead, 0, msg, frameHead.length, packetHead.length); // System.out.println(HexDump.toHex(msg)); - int areaLen = b.length - 9 + dataLen; - b[7] = (byte) areaLen; - b[32] = (byte) dataLen; - System.arraycopy(b, 0, msg, packetHead.length + frameHead.length, b.length); + int areaLen = b.length - 9 + dataLen; + b[7] = (byte) areaLen; + b[32] = (byte) dataLen; + System.arraycopy(b, 0, msg, packetHead.length + frameHead.length, b.length); // System.out.println(HexDump.toHex(msg)); - System.arraycopy(data, 0, msg, packetHead.length + frameHead.length + b.length, dataLen); + System.arraycopy(data, 0, msg, packetHead.length + frameHead.length + b.length, dataLen); // System.out.println(HexDump.toHex(msg)); - byte[] toCrc = new byte[msg.length - 8]; - System.arraycopy(msg, 8, toCrc, 0, toCrc.length); - int crc = CalcCRC(toCrc, toCrc.length); + byte[] toCrc = new byte[msg.length - 8]; + System.arraycopy(msg, 8, toCrc, 0, toCrc.length); + int crc = CalcCRC(toCrc, toCrc.length); - byte[] msgCrc = new byte[msg.length + 3]; - System.arraycopy(msg, 0, msgCrc, 0, msg.length); - msgCrc[msgCrc.length - 2] = (byte) (crc >> 8); - msgCrc[msgCrc.length - 3] = (byte) crc; - msgCrc[msgCrc.length - 1] = frameTail; + byte[] msgCrc = new byte[msg.length + 3]; + System.arraycopy(msg, 0, msgCrc, 0, msg.length); + msgCrc[msgCrc.length - 2] = (byte) (crc >> 8); + msgCrc[msgCrc.length - 3] = (byte) crc; + msgCrc[msgCrc.length - 1] = frameTail; // System.out.println(getId() + " LED 发送数据:" + HexDump.toHex(msgCrc)); - socket.getOutputStream().write(msgCrc); - socket.getOutputStream().flush(); + socket.getOutputStream().write(msgCrc); + socket.getOutputStream().flush(); - InputStream in = socket.getInputStream(); - byte[] buf = new byte[in.available()]; - in.read(buf); - // LED 返回 - BufferedInputStream bis = new BufferedInputStream(socket.getInputStream()); - byte[] y = new byte[128]; - int read = bis.read(y); - while (!(read > 0)) { - read = bis.read(y); - } - byte[] z = new byte[read]; - System.arraycopy(y, 0, z, 0, read); + InputStream in = socket.getInputStream(); + byte[] buf = new byte[in.available()]; + in.read(buf); + // LED 返回 + BufferedInputStream bis = new BufferedInputStream(socket.getInputStream()); + byte[] y = new byte[128]; + int read = bis.read(y); + while (!(read > 0)) { + read = bis.read(y); + } + byte[] z = new byte[read]; + System.arraycopy(y, 0, z, 0, read); // System.out.println(getId() + " LED 返回数据:" + HexDump.toHex(z)); // socket.close(); - } catch (Exception e) { - if (e.getMessage().contains("Socket is not connected")) { - log.error("LED %s %s 连接已断开", getId(), getIp()); - } - if (e.getMessage().contains("Read timed out")) { - log.error("LED %s %s 连接超时", getId(), getIp()); - } else { - log.error(e.getMessage(), e); - } - - reconn(); - } finally { - lock.unlock(); + } catch (Exception e) { + if (e.getMessage().contains("Socket is not connected")) { + log.error("LED %s %s 连接已断开", getId(), getIp()); } + if (e.getMessage().contains("Read timed out")) { + log.error("LED %s %s 连接超时", getId(), getIp()); + } else { + log.error(e.getMessage(), e); + } + + reconn(); + } finally { + lock.unlock(); } } @@ -289,29 +287,32 @@ public class LEDThread extends Device implements Runnable { } public boolean reconn() { + connlock.lock(); try { - log.debug("销毁LED连接"); - if (socket != null) { - socket.close(); - } + try { + log.debug("销毁LED连接"); + if (socket != null) { + socket.close(); + } - socket = null; - } catch (Exception e) { - log.error(e.getMessage(), e); - } - - try { - socket = new Socket(); - socket.setSoTimeout(1000); - socket.connect(new InetSocketAddress(getIp(), getPort()), 5000); - } catch (Exception e) { - if (e.getMessage().contains("connect timed out")) { - log.error("LED %s %s 连接超时", getId(), getIp()); - } else { + socket = null; + } catch (Exception e) { log.error(e.getMessage(), e); } + + try { + socket = new Socket(); + socket.setSoTimeout(1000); + socket.connect(new InetSocketAddress(getIp(), getPort()), 5000); + } catch (Exception e) { + if (e.getMessage().contains("connect timed out")) { + log.error("LED %s %s 连接超时", getId(), getIp()); + } else { + log.error(e.getMessage(), e); + } + } } finally { - lock.unlock(); + connlock.unlock(); } return isConnected(); diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java index 4186d22..85cb35c 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/main/Config.java @@ -92,7 +92,7 @@ public class Config extends JFinalConfig { public static DeviceThread deviceThread = new DeviceThread(); public static SocketIOService socketio = null; private static boolean client_run = true; - public static final String CLINET_VERSION = "20201019"; + public static final String CLINET_VERSION = "20201021"; public static String getRootPath() { return PathKit.getWebRootPath() diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java index d5d3e48..96b2437 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java @@ -349,9 +349,13 @@ public class OrderTempSyncService { order.setProductId(ordercluster.getProductId()); order.setProductName(ordercluster.getProductName()); - BigDecimal up = null; + BigDecimal up = ordercluster.getUnitPrice(); // 集团订单是每天创建的,可以使用集团订单中确定的单价 - // 客户信息 + if (up == null) { + return Result.failedstr("未查到有效的单价信息"); + } + + // 客户信息 Customer customer = Customer.dao.findById(ordercluster.getCustomerId()); if (customer != null) { order.setCustomerId(customer.getId()); @@ -362,8 +366,6 @@ public class OrderTempSyncService { order.setCustomerPhone(customer.getPhone()); order.setCustomerTexpayerName(customer.getTexpayerName()); order.setCustomerTexpayerNum(customer.getTexpayerNum()); - - up = CustomerSupermarketProductService.me.getUnitPrice(customer.getId(), transport.getSupermarketId(), ordercluster.getProductId()); } else { // 可能是零散购砂客户,没有对应的客户信息记录,但是有客户名称之类的信息 order.setCustomerId(ordercluster.getCustomerId()); @@ -374,12 +376,6 @@ public class OrderTempSyncService { order.setCustomerPhone(ordercluster.getCustomerPhone()); order.setCustomerTexpayerName(ordercluster.getCustomerTexpayerName()); order.setCustomerTexpayerNum(ordercluster.getCustomerTexpayerNum()); - - up = SupermarketProductService.me.getUnitPrice(transport.getSupermarketId(), ordercluster.getProductId()); - } - - if (up == null) { - return Result.failedstr("未查到有效的单价信息"); } // 支付信息 @@ -677,7 +673,8 @@ public class OrderTempSyncService { transport.setTransCoTexpayerName(ordercluster.getTransCoTexpayerName()); transport.setTransCoTexpayerNum(ordercluster.getTransCoTexpayerNum()); - BigDecimal up = CustomerSupermarketProductService.me.getUnitPrice(customer.getId(), transport.getSupermarketId(), product.getId()); +// BigDecimal up = CustomerSupermarketProductService.me.getUnitPrice(customer.getId(), transport.getSupermarketId(), product.getId()); + BigDecimal up = ordercluster.getUnitPrice(); // 集团订单是每天创建的,可以使用集团订单中确定的单价 if (up == null) { return Result.failedstr("未查到有效的单价信息"); diff --git a/ssjygl-xsx-local/src/main/resources/tpl.xlsx b/ssjygl-xsx-local/src/main/resources/tpl.xlsx index 8c2d6474789f6bbd33af9d34803bed68a017f782..4baa01b6112354acfbcd89e5e630d6baa5a3224c 100644 GIT binary patch delta 5215 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 delta 5209 zcmai2byO7Gw;fWN0qGpNLsEtsU`Po;Qo0)y=^8=lW(a8*Qc{Kzkdg)w0V(P3kWT0E z{njtO_uhKzoj=dr`|i8$-Rqon&y3}~<)<@jTz75zPe0KC03G-}HWh5aElZHBJ+Iye z(q3wzq7toE&MW(}*tNW|x-Cjqq7T;$O?ZwKs#knKe?b-WR{BTL!4q!+CdaI-Y6S~x z#*=Hwt-!7I_4*+l=iZ`K<^-UOM^di`w^gnH%h|P+(`8bz$e?v{bhe^HHyN1zORyJ` z;>3=>Ck_kH9Q_>OMFIoIBXEZ!!K7HjT}Yr13r(8GPMN$AX~p{|ImPi?Eg^7{+(K-o zl+i9=3|6TNuR}(yi8v^^7>W^;dMw}IKpjM6qO`7IG^1;S1^MPTbY6n3sISyrXUor; zQM&9M)~e68LbTk)Phb{6`hh5Z=xM5aRG199Ln%|xvaC0KEQ~QM9~|3tnh1`!;c@f$ zY|ZwL5{c(+*u_B5ii!)Dd)c5bkF$tB)*|V~K$FeuJH$`B^RkFjCh?mMx1zpUN^Xxy z-BWpK!)Vbtch4lY;Z=>n7oYswx2)F*ygg*n^}kURsh?xvG>1hD9fNZzKM2TCb?XXe zJRVVEp3d*CGKZlmnrQ-3aGrlYPYU8|ws~%tFK|q*B(ET3um$DN=bFHY`)V{qz9Rf0 zx*QZel5&GIDw!Ls*0tqfH+XybiibR*`t`^%P+M*2=Y9xc(DM53T?wvehzCd~ zPJHBcqAcWvkc(G9bureF{hCi=tCkH`24-8&oV@HiT}v1WTq@Kv-PG3UbK6$nOsw2* z-75T>!yEQ%XD(#vw}0CTnO1y+&vGn*Jh#e6c$Er)=X)^dEyhHEP6Ne$I9tM{h}*(} zZPxYRk6(we-6iy99*z0|5*fvMroW{q_Hbs+mc3W5G+I|KO$@7@PstO!(4%`o@N>lj z+^NmkJE^s;JIp682%2!DS4G^OYOEkfjw9ixZ*>>^LrkQN{Y?2gj*ejWcNbf?#15w= z!dWT`&hP>WrQBYx*G~@wv{UB5t}ytOs4BF5t#bl6q7xLOz($UAk7FzIkPH66*(y=JfY zh>F;>SHy&Y&SRy zfWlyXuEK;7X^p)t+{7E!(x6d=MSHqGE>CIg_6j-ZP+9X-aLd#V3iZzKliSlRHYRjI zabWv3b5Aj8u=Ps$xAfJO5>(#cot2xBkB@!d!qu*e5Vf(rLHfmHhBQr%mO#~D5A_`C zV989DtVobnuV#qR{l+IeBcADJH4v7>w5;e&Lq z#z6xYY`4gqiFv!ai+0`)p*IQKxi1tV`eH>>s`gezn@$MzPzxW%zM*_3#9B+jBl^=e z_8KWQg(u+Umx;1=0$DeV8{*;uxw+0x{!*XwaXxX`$lMvOM~IG?It5yo2zKmwC}_gA zj}{v(ViGsaF50dyjekFvT{uWL@cqaX_{w>_sn zE&nd0^NmbGJ9x%j40oG$huGn_1J!wn#I^Mdt++pw%tKcpLNp?_vAme3iu2Wu7WcL*j# z9z>Ezo@fZ+;gipBzj~U8LHvKi{Rtq;vlurymlT_u ztUvxKBR9QOjAuer7H~jw{Pqfh4q{4Fadj#VHJnkAqk!TeMT+2{2^PwC>d{|>2fmG{ zChC299#Vy_jP;ECGaYO|4to^?_w9QKv*s1PMC-dMT_8R!*8oK4V>gGKonyT}KD9Rb zD}EHXeHOLU#PB-3&DzcVW+5f(&5yXRI$iQujd*nAyn4&!oi9RaLLpcMc+5nx{9kxL zwV;Jc&9_C_A_<7cxHGrg94ejjxhkC@DhD&_NX!g|BLaL-BM7#zO%Hko;s+8(60-tG z(W5YT%mNG`Rv_HO6nF(YEX|xnbxSL$@OJf~_I95Xh>ow$&OTjA|i`cNwdnIXIV^Df2ET?%!f?Hfk3~CikIVWj&*rC~Bo9ToE zD^eb+9b*#&<#ewCmI9iWk#p(Qwu>QuHmSf{cibxkI5yCd6WpIc2 z1b7{Z4rOYjvaBLUP-%y9lB*Qr4ByBok>tt_MMI_>YfZ;rB>jtFqxk-o$j@+CnGA$i z+l%A;Z!tx~=&L8u$2KqYF?Dof7>@FBK(x*hk!gI%5{YdjB6Qj+wXj4o0Qui{$1(kE)#vq?GZS5%|Z&{Urs#JFw(q)PBp^L%~wn zAWz1k1}sJ|U@jaTJlKje$7`!^n`GvC{FfVspg=y7=13{13<97X$>~J0fVoq+6+*=F zWii*B*nD$e{cU1LYizR7&=)?lXyfn2-R%gsQ{4PrB@Ag0p zTfh95s^ibAY-q3y>2*aVcFBP&pAn(TKu%*?N+ZjE^Aq9NB+)QOHt|EeojGd=X8?v)e3VHM1Ajdfi6UPzY!Y~%JPAn2w|qDkp{S#~cS%n=SMYMV zgzVS&*jV6+X)e+(N;Z0l%_mC)1YuOUHY!k7+?FI z;eg$k#ZcazVO?Wd+<#j;s@mNXn5^a*RG5X9x*Z_+Bx5SmZ1kH1%A`EJGau;iY!f>y zQ*2!1dn|6M$e!-GnD9G>Plmnfk+5<{I;F!G#x%*R5W{s&e>V`3SUHakN#Pra7h$7x&weSPPf zO@K=#x>Kn1zUR=7AbH8an;}KEU$>Zi78kt=TdwK~j=!kAFL&qm?uBz!YGOp`b%J?) zL?r2WpO%9V22e}2K~32CepWPXhOqc6gkGrZ>-E;o-8m{skLBaUf~_X10=jXA+pKvE}TpK!o$Lt5lF zEd$JMu>E~kmhTqrKW!~^v!kiee zopKun^qt!D;F^UyRO>!LRtjan>C){HAUba$rZ<%q-1hoLDxniP z=0h19zr2@*o@|sA2oAx6BG(Pu4aw}7PtbY5#j)kK8u-+HLjGcF@~d1JWvOc`J!RSL zo^fi`AAVLa{)P=YGAnWkd0~6Qp{9;WT5N+l-St9mFl zTt6qX39T4c=?Sd>N~7n$#44mT`LbTSh>qV>ipUSNHL=9zAwnWRB}sC-=WhMxET;*T}Y^4o0UC0cbPG&9t(HM}bp5@taNh6+sbBRc!oS zAzapbZ#}&BJLSnBo7&J5Dt0Bwb`uJq1YNSt8tS~6zSN#nfPVVOhmA_JqF9ZIfhIL$^e(i5;21_?gbxjn zu;}$cIgPF`40#f>_S#8HO5TXpCctmcb#7n5OIqc*q{~yvqkW?OR;9IdqBS9}mz?XO=5<-E)9(QZdI_y2UC-{;I6E!m$b z!)U-D;l`9V?k1cuF=IHU_+|(kqHasr)f2`^#5Z{YJ z%qbCo)|jB}ivx~!>#WzK-s&|8k2dp{PDf^Z=2e$y^KNUGx(*p<`jCA6jx-EbG+$(O zL^xtkQmgbScB?~^EN-ZoDpT1iHR^UTesh7&j?GdrxyAY&E(nR%(;HTgAn)xp z-w7F|CC!QwUjHY*lk&|QzCD~eBWaLR=11s)D%&BvuAa22-&?LKZna1_DHZFo`#6-% z4m;h(cF*h;&(=|@CQ3-ccce>}>`~PdFE4w}1|GRr418DMOQp044Jb0UTx0!FtJR|_cRzpCmB{9;SN8&8GHRx zA#JO{blme^2}+Yv&&A~{yGS`P)#697P= z;O8vBI#bR_tiO%p4*4|Ew&2qIe02YwTnGXHR1ePkPtXv+1qo>2`TX2yI`CnBcG~~h zzy1TAgA)jVX#Z{AhlPh0_qV`;D+|b>-!Q{TSlHk-0^DeK@LvL8+JATi4FJe`7!i{E d4gQdU3kb@fy@0z3N~5vBD+SrH&H4TU{1>KmslosN diff --git a/ssjygl-xsx-local/src/main/resources/tpl_bill_full.xlsx b/ssjygl-xsx-local/src/main/resources/tpl_bill_full.xlsx index 19b045e8f552bd0a1bfe1a09b9fbef09ffc0cd1d..e034d412ba9df25aaf4b723960ba513602b12e52 100644 GIT binary patch delta 4787 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 diff --git a/ssjygl-xsx-local/src/main/resources/tpl_完整版.xlsx b/ssjygl-xsx-local/src/main/resources/tpl_完整版.xlsx index a22a1c14b819bbca66cad97626c2f12b419be02c..cb4a2281ef7ffdcc279b0f30972701efc5178f28 100644 GIT binary patch delta 5445 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 GQT_`X@;!k7 diff --git a/ssjygl-xsx-local/src/main/resources/tpl_结算单.xlsx b/ssjygl-xsx-local/src/main/resources/tpl_结算单.xlsx index 8559b7aa5084af9248d61367b6221fb9ce71387d..7934fa8ceb92bba5c980a18d8e7c4e9c630a2a96 100644 GIT binary patch delta 5699 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 delta 5728 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