package com.ld.igds.protocol.weight;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.ld.igds.inout.dto.ApiInoutData;
|
import com.ld.igds.inout.ApiInoutService;
|
import com.ld.igds.io.constant.ProtocolEnum;
|
import com.ld.igds.util.HttpUtils;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.stereotype.Component;
|
|
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.Executors;
|
import java.util.concurrent.FutureTask;
|
|
/**
|
* @Desc: 风正致远地磅主控协议实现,出入库相关接口
|
* @author: andy.jia
|
* @update-time: 2022/11/26 15:37
|
*/
|
@Slf4j
|
@Component
|
public class FzzyWeightServiceImpl implements ApiInoutService {
|
|
|
@Override
|
public String getProtocol() {
|
return ProtocolEnum.TCP_FZZY_WEIGHT.getCode();
|
}
|
|
/**
|
* @param param
|
* @return
|
*/
|
@Override
|
public ApiInoutData getPlateNum(ApiInoutData param) {
|
|
|
if (null == param.getSn()) {
|
param.setErrorMsg("当前车牌识别配置未配置设备编号,无法获取");
|
return param;
|
}
|
|
try {
|
|
String url = "http://" + param.getIp() + ":" + param.getPort() + "/get-plate";
|
JSONObject json = new JSONObject();
|
|
json.put("actionCode", WeightUtil.ACTION_CODE_50);
|
json.put("deviceId", param.getSn());
|
json.put("time", DateFormatUtils.format(param.getTime(), "yyyyMMddHHmmss"));
|
|
log.debug("---------调用车牌识别获取结果-------------------{}-{}-{}", param.getIp(), param.getPort(), param.getSn());
|
|
String result = HttpUtils.doPostJson(url, json.toJSONString());
|
log.debug("---------车牌识别返回结果-------------------{}", result);
|
|
|
WeightResult weightResult = JSONObject.parseObject(result, WeightResult.class);
|
|
if (null == weightResult) {
|
param.setErrorMsg("获取失败:未获取到车牌识别信息");
|
return param;
|
}
|
if (StringUtils.isEmpty(weightResult.getPlateNum())) {
|
param.setErrorMsg("获取失败:未获取到车牌识别信息");
|
return param;
|
}
|
|
if (WeightUtil.RESULT_CODE_0.equals(weightResult.getCode())) {
|
param.setPlateNum(weightResult.getPlateNum());
|
} else {
|
param.setErrorMsg("获取失败:" + weightResult.getMsg());
|
}
|
} catch (Exception e) {
|
param.setErrorMsg("获取失败:" + e.getMessage());
|
return param;
|
}
|
|
return param;
|
}
|
|
/**
|
* 不需要实现
|
*
|
* @param param
|
* @return
|
*/
|
@Override
|
public String initLpr(ApiInoutData param) {
|
return "当前模式无需初始化车牌识别";
|
}
|
|
|
/**
|
* 暂时不实现
|
*
|
* @param param deviceId和actionCode 不可为空
|
* @return
|
*/
|
@Override
|
public String gateControl(ApiInoutData param) {
|
return null;
|
}
|
|
/**
|
* 增加白名单 --调用子线程实现
|
*
|
* @param param deviceId和actionCode 不可为空
|
* @return
|
*/
|
public String addWhitePlate(ApiInoutData param) {
|
|
FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_10}));
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
executorService.submit(futureTask);
|
executorService.shutdown();
|
|
return "SUCCESS";
|
}
|
|
/**
|
* 删除白名单---调用子线程实现
|
*
|
* @param param
|
* @return
|
*/
|
public String delWhitePlate(ApiInoutData param) {
|
FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_11}));
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
executorService.submit(futureTask);
|
executorService.shutdown();
|
|
return "SUCCESS";
|
}
|
|
/**
|
* 语音通知 --调用子线程实现
|
*
|
* @param param actionCode 和 msg不可为空
|
* @return
|
*/
|
@Override
|
public String noticeRadio(ApiInoutData param) {
|
|
FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_30}));
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
executorService.submit(futureTask);
|
executorService.shutdown();
|
|
return "SUCCESS";
|
}
|
|
|
/**
|
* 称重完成 --调用子线程实现
|
*
|
* @param param
|
* @return
|
*/
|
public String noticeWeightDone(ApiInoutData param) {
|
FutureTask<String> futureTask = new FutureTask<>(new WeightGatewayRemoteTask(param, new String[]{WeightUtil.ACTION_CODE_60, WeightUtil.ACTION_CODE_30}));
|
ExecutorService executorService = Executors.newCachedThreadPool();
|
executorService.submit(futureTask);
|
executorService.shutdown();
|
|
return "SUCCESS";
|
}
|
|
/**
|
* @param param
|
* @return
|
*/
|
@Override
|
public ApiInoutData getIcCardNum(ApiInoutData param) {
|
|
try {
|
|
String url = "http://" + param.getIp() + ":" + param.getPort() + "/get-plate";
|
JSONObject json = new JSONObject();
|
|
json.put("actionCode", WeightUtil.ACTION_CODE_70);
|
json.put("time", DateFormatUtils.format(param.getTime(), "yyyyMMddHHmmss"));
|
|
log.debug("---------获取智慧卡信息-------------------{}-{}-{}", param.getIp(), param.getPort(), param.getSn());
|
|
String result = HttpUtils.doPostJson(url, json.toJSONString());
|
log.debug("---------智慧卡返回结果-------------------{}", result);
|
|
|
WeightResult weightResult = JSONObject.parseObject(result, WeightResult.class);
|
|
if (null == weightResult) {
|
param.setErrorMsg("获取失败:未获取到IC卡识别信息");
|
return param;
|
}
|
if (StringUtils.isEmpty(weightResult.getIcCardNo())) {
|
param.setErrorMsg("获取失败:未获取到IC卡识别信息");
|
return param;
|
}
|
|
if (WeightUtil.RESULT_CODE_0.equals(weightResult.getCode())) {
|
param.setIcCardNo(weightResult.getIcCardNo());
|
} else {
|
param.setErrorMsg("获取失败:" + weightResult.getMsg());
|
}
|
} catch (Exception e) {
|
param.setErrorMsg("获取失败:" + e.getMessage());
|
return param;
|
}
|
|
return param;
|
}
|
|
@Override
|
public String noticeLed(ApiInoutData param) {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
}
|