Tekijä | SHA1 | Viesti | Päivämäärä |
---|---|---|---|
|
d7fbedaec1 | Merge branch 'master' of https://git.malls.iformall.com/server/bjAirport | 1 kuukausi sitten |
|
352077d9f8 | fix | 1 kuukausi sitten |
@@ -120,7 +120,7 @@ public class HaiKangController { | |||
//打印json格式上传的事件报文 | |||
String baowen = fi.getString("UTF-8"); | |||
//通过表单name属性进行解析报文 | |||
logger.debug(">>>>>>>>>>"+baowen); | |||
//logger.debug(">>>>>>>>>>"+baowen); | |||
switch (fi.getFieldName()) { | |||
case "event_log"://门禁、身份证事件解析 | |||
logger.info("receive Acs event"); | |||
@@ -133,8 +133,10 @@ public class HaiKangController { | |||
String ip = bobj.getString("ipAddress"); | |||
if (null != rtd) { | |||
Integer peopleNum = rtd.getInteger("peopleNum"); | |||
logger.debug("peopleNum>>>>>>>>>>"+peopleNum); | |||
if (null != peopleNum) { | |||
peopleNumberFactory.setPeopleNumber(ip, peopleNum); | |||
peopleNumberFactory.sendToDengxiang(); | |||
//Integer peopleNumber = peopleNumberFactory.getPeopleNumber(); | |||
//todengxiang(peopleNumber); | |||
}else { | |||
@@ -1,9 +1,11 @@ | |||
package com.iformall.haikang; | |||
import java.util.Iterator; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.concurrent.ConcurrentHashMap; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.apache.http.auth.AuthScope; | |||
import org.apache.http.auth.UsernamePasswordCredentials; | |||
import org.apache.http.client.CredentialsProvider; | |||
@@ -12,10 +14,15 @@ import org.apache.http.impl.client.CloseableHttpClient; | |||
import org.apache.http.impl.client.HttpClients; | |||
import org.springframework.stereotype.Component; | |||
import com.iformall.haikang.netty.NioSocketHandler; | |||
import io.netty.channel.ChannelHandlerContext; | |||
@Component | |||
public class HKPeopleNumberFactory { | |||
private Map<String,Integer> peopleCountMap; | |||
public List<NioSocketHandler> handlerList; | |||
public void setPeopleNumber(String ip,Integer count) { | |||
synchronized (ip) { | |||
@@ -41,4 +48,15 @@ public class HKPeopleNumberFactory { | |||
return all; | |||
} | |||
public void sendToDengxiang() { | |||
if (null != handlerList && handlerList.size() > 0 ) { | |||
for (int i = 0 ; i < handlerList.size(); i++) { | |||
NioSocketHandler handler = handlerList.get(i); | |||
if (null != handler && null != handler.cctx && StringUtils.isNotBlank(handler.sourceId) && StringUtils.isNotBlank(handler.destId)) { | |||
handler.sendControlData(handler.cctx, handler.sourceId,handler.destId); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -31,6 +31,10 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ | |||
private HKPeopleNumberFactory peopleNumberFactory; | |||
private CarNumberFactory carNumberFactory; | |||
private final ThreadPoolTaskExecutor threadPoolTaskExecutor; | |||
public ChannelHandlerContext cctx; | |||
public String sourceId; | |||
public String destId; | |||
public NioSocketHandler(ThreadPoolTaskExecutor threadPoolTaskExecutor,HKPeopleNumberFactory peopleNumberFactory,CarNumberFactory carNumberFactory) { | |||
this.threadPoolTaskExecutor = threadPoolTaskExecutor; | |||
@@ -45,7 +49,7 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ | |||
// 你的处理逻辑 | |||
String clientId = ctx.channel().id().asShortText(); | |||
log.info("netty tcp 接收到用户id为"+clientId+"的消息: " + msg); | |||
cctx = ctx; | |||
// 应答报文,根据要求应答 | |||
String repeak = msg; | |||
handleMessage(ctx,msg); | |||
@@ -59,6 +63,7 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ | |||
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { | |||
cause.printStackTrace(); | |||
ctx.close(); | |||
cctx = null; | |||
} | |||
@@ -91,29 +96,35 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ | |||
log.debug("haikang keepOnline result:"+xintiaoresult); | |||
ctx.writeAndFlush(xintiaoresult); | |||
//给灯箱发送 | |||
for (int i = 0 ; i < types.length ; i++) { | |||
Map dxobj = new LinkedHashMap(); | |||
dxobj.put("dest", source); | |||
dxobj.put("source", dest); | |||
dxobj.put("func", "ControlData"); | |||
JSONArray datas1 = new JSONArray(); | |||
Map dm1 = new HashMap(); | |||
dm1.put("node", generateNode(types[i],source)); | |||
datas1.add(dm1); | |||
dxobj.put("data", datas1); | |||
String dengxiangcontent = JSON.toJSONString(dxobj); | |||
log.debug("haikang send result:"+dengxiangcontent); | |||
try { | |||
Thread.sleep(3000); | |||
} catch (InterruptedException e) { | |||
log.error("netty handleMessage error.",e); | |||
} | |||
ctx.writeAndFlush(dengxiangcontent); | |||
} | |||
sendControlData(ctx,source,dest); | |||
this.sourceId = source; | |||
this.destId = dest; | |||
} | |||
} | |||
public void sendControlData(ChannelHandlerContext ctx,String source,String dest) { | |||
//给灯箱发送 | |||
for (int i = 0 ; i < types.length ; i++) { | |||
Map dxobj = new LinkedHashMap(); | |||
dxobj.put("dest", source); | |||
dxobj.put("source", dest); | |||
dxobj.put("func", "ControlData"); | |||
JSONArray datas1 = new JSONArray(); | |||
Map dm1 = new HashMap(); | |||
dm1.put("node", generateNode(types[i],source)); | |||
datas1.add(dm1); | |||
dxobj.put("data", datas1); | |||
String dengxiangcontent = JSON.toJSONString(dxobj); | |||
log.debug("haikang send result:"+dengxiangcontent); | |||
try { | |||
Thread.sleep(3000); | |||
} catch (InterruptedException e) { | |||
log.error("netty handleMessage error.",e); | |||
} | |||
ctx.writeAndFlush(dengxiangcontent); | |||
} | |||
} | |||
//编号2代表需要等待时长,编号3代表当前排队人数,编号4代表当前场内出租车,编号5代表在途出租车 | |||
private String generateNode(int type,String sn) { | |||
StringBuffer sb = new StringBuffer("0-5-").append(type).append("-"); | |||
@@ -123,10 +134,16 @@ public class NioSocketHandler extends SimpleChannelInboundHandler<String>{ | |||
value = 1;//查询等待时长 | |||
break; | |||
case 3: | |||
value = peopleNumberFactory.getPeopleNumber();;//查询当前排队人数 | |||
value = peopleNumberFactory.getPeopleNumber();//查询当前排队人数 | |||
if( value > 99) { | |||
value = 99; | |||
} | |||
break; | |||
case 4: | |||
value = carNumberFactory.getCarNumber();//查询场内出租车 | |||
if( value > 99) { | |||
value = 99; | |||
} | |||
break; | |||
case 5: | |||
value = 1;//查询在途出租车 | |||
@@ -1,5 +1,7 @@ | |||
package com.iformall.haikang.netty; | |||
import java.util.ArrayList; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
@@ -49,7 +51,14 @@ public class NioSocketInitializer extends ChannelInitializer<SocketChannel>{ | |||
// 使用自定义线程池处理业务逻辑 | |||
log.info(">>>>peopleNumberFactory:"+peopleNumberFactory); | |||
pipeline.addLast(new NioSocketHandler(threadPoolTaskExecutor,peopleNumberFactory,carNumberFactory)); | |||
NioSocketHandler handler = new NioSocketHandler(threadPoolTaskExecutor,peopleNumberFactory,carNumberFactory); | |||
pipeline.addLast(handler); | |||
if (null == peopleNumberFactory.handlerList) { | |||
peopleNumberFactory.handlerList = new ArrayList<NioSocketHandler>(); | |||
} | |||
if (!peopleNumberFactory.handlerList.contains(handler)) { | |||
peopleNumberFactory.handlerList.add(handler); | |||
} | |||
// 连接策略 | |||
pipeline.addLast(new IpRejectHandler()); | |||
} | |||