|
|
|
@ -1,5 +1,6 @@
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
package com.zhehekeji.web.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import codeDetector.BarcodeDetector;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
import com.zhehekeji.common.util.PathUtil;
|
|
|
|
import com.zhehekeji.common.util.PathUtil;
|
|
|
|
import com.zhehekeji.web.config.ConfigProperties;
|
|
|
|
import com.zhehekeji.web.config.ConfigProperties;
|
|
|
|
@ -8,6 +9,7 @@ import com.zhehekeji.web.lib.*;
|
|
|
|
import com.zhehekeji.web.mapper.*;
|
|
|
|
import com.zhehekeji.web.mapper.*;
|
|
|
|
import com.zhehekeji.web.pojo.OrderVO;
|
|
|
|
import com.zhehekeji.web.pojo.OrderVO;
|
|
|
|
import com.zhehekeji.web.service.RFID.RFIDSocket;
|
|
|
|
import com.zhehekeji.web.service.RFID.RFIDSocket;
|
|
|
|
|
|
|
|
import com.zhehekeji.web.service.hikLightSource.HikControlSocket;
|
|
|
|
import com.zhehekeji.web.service.ksec.KsecNettyClient;
|
|
|
|
import com.zhehekeji.web.service.ksec.KsecNettyClient;
|
|
|
|
import com.zhehekeji.web.service.sick.SickSocket;
|
|
|
|
import com.zhehekeji.web.service.sick.SickSocket;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@ -151,13 +153,18 @@ public class PlcService {
|
|
|
|
update.setLeftRight2(plcCmdInfo.getLeftRight2());
|
|
|
|
update.setLeftRight2(plcCmdInfo.getLeftRight2());
|
|
|
|
update.setColumn2(plcCmdInfo.getColumn2());
|
|
|
|
update.setColumn2(plcCmdInfo.getColumn2());
|
|
|
|
update.setRow2(plcCmdInfo.getRow2());
|
|
|
|
update.setRow2(plcCmdInfo.getRow2());
|
|
|
|
|
|
|
|
LocalDateTime endDownLoadTime = endTime.plusSeconds(5);
|
|
|
|
|
|
|
|
Duration duration = Duration.between(order.getStartTime(),endDownLoadTime);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(duration.toMinutes() > 50){
|
|
|
|
|
|
|
|
endDownLoadTime = order.getStartTime().plusMinutes(50);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (street.getCamera1Id() != null) {
|
|
|
|
if (street.getCamera1Id() != null) {
|
|
|
|
String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endTime.plusSeconds(5));
|
|
|
|
String path = cameraVideo(street.getCamera1Id(),order.getStartTime(),endDownLoadTime);
|
|
|
|
update.setVideoPath1(path);
|
|
|
|
update.setVideoPath1(path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (street.getCamera2Id() != null) {
|
|
|
|
if (street.getCamera2Id() != null) {
|
|
|
|
String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endTime.plusSeconds(5));
|
|
|
|
String path = cameraVideo(street.getCamera2Id(),order.getStartTime(),endDownLoadTime);
|
|
|
|
update.setVideoPath2(path);
|
|
|
|
update.setVideoPath2(path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
orderMapper.updateById(update);
|
|
|
|
orderMapper.updateById(update);
|
|
|
|
@ -201,7 +208,7 @@ public class PlcService {
|
|
|
|
* @param plcCmdInfo
|
|
|
|
* @param plcCmdInfo
|
|
|
|
* @param times
|
|
|
|
* @param times
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void action(PlcCmdInfo plcCmdInfo, Integer times, String code) {
|
|
|
|
public void action(PlcCmdInfo plcCmdInfo, Integer times, String code) throws InterruptedException {
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
if (street == null) {
|
|
|
|
if (street == null) {
|
|
|
|
log.error("street not found ,plcId :{}", plcCmdInfo.getPlcId());
|
|
|
|
log.error("street not found ,plcId :{}", plcCmdInfo.getPlcId());
|
|
|
|
@ -209,9 +216,7 @@ public class PlcService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code);
|
|
|
|
OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code);
|
|
|
|
String path = null;
|
|
|
|
String path = null;
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 拍照是C2 C4拍照(取货完成、放货完成)
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
Boolean needCapture = doNeedCaptureByCode(orderInfo.getCmdCode());
|
|
|
|
Boolean needCapture = doNeedCaptureByCode(orderInfo.getCmdCode());
|
|
|
|
/***
|
|
|
|
/***
|
|
|
|
* 判断该巷道有几个相机
|
|
|
|
* 判断该巷道有几个相机
|
|
|
|
@ -223,22 +228,43 @@ public class PlcService {
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,orderInfo.getLeftRight());
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,orderInfo.getLeftRight());
|
|
|
|
gyrateCameraByCode(cameraId,orderInfo.getCmdCode());
|
|
|
|
gyrateCameraByCode(cameraId,orderInfo.getCmdCode());
|
|
|
|
if(needCapture){
|
|
|
|
if(needCapture){
|
|
|
|
Boolean delay = false;
|
|
|
|
Boolean delay = true;
|
|
|
|
if(code.startsWith("C1") || code.startsWith("C3")){
|
|
|
|
|
|
|
|
delay = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Integer row = 0;
|
|
|
|
Integer row = 0;
|
|
|
|
Integer column = 0;
|
|
|
|
Integer column = 0;
|
|
|
|
|
|
|
|
Integer sep = 0;
|
|
|
|
if(times<=2){
|
|
|
|
if(times<=2){
|
|
|
|
row = plcCmdInfo.getRow1();
|
|
|
|
row = plcCmdInfo.getRow1();
|
|
|
|
column = plcCmdInfo.getColumn1();
|
|
|
|
column = plcCmdInfo.getColumn1();
|
|
|
|
|
|
|
|
sep = plcCmdInfo.getSeparation1();
|
|
|
|
}else {
|
|
|
|
}else {
|
|
|
|
row = plcCmdInfo.getRow2();
|
|
|
|
row = plcCmdInfo.getRow2();
|
|
|
|
column = plcCmdInfo.getColumn2();
|
|
|
|
column = plcCmdInfo.getColumn2();
|
|
|
|
|
|
|
|
sep = plcCmdInfo.getSeparation2();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column);
|
|
|
|
long delayTime = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(code.startsWith("C1")){
|
|
|
|
|
|
|
|
|
|
|
|
path = cameraCapture(cameraId,delay,configProperties.getCameraConfig().getDelayCaptureTime(),path);
|
|
|
|
delayTime = configProperties.getCameraConfig().getC1DelayCaptureTime();
|
|
|
|
|
|
|
|
}else if(code.startsWith("C2")){
|
|
|
|
|
|
|
|
if(sep == 1){
|
|
|
|
|
|
|
|
delayTime = configProperties.getCameraConfig().getC2DelayCaptureTime();
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
delayTime = configProperties.getCameraConfig().getC2OutDelayCaptureTime();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if(code.startsWith("C3")){
|
|
|
|
|
|
|
|
delayTime = configProperties.getCameraConfig().getC3DelayCaptureTime();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if(code.startsWith("C4")){
|
|
|
|
|
|
|
|
if(sep == 1){
|
|
|
|
|
|
|
|
delayTime = configProperties.getCameraConfig().getC4DelayCaptureTime();
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
delayTime = configProperties.getCameraConfig().getC4OutDelayCaptureTime();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
path = PathUtil.createFileNameByRowColumn("jpg",cameraId,row,column);
|
|
|
|
|
|
|
|
path = cameraCapture(cameraId,delay,delayTime,path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//update order info after capture
|
|
|
|
//update order info after capture
|
|
|
|
if (path != null && needCapture) {
|
|
|
|
if (path != null && needCapture) {
|
|
|
|
@ -248,10 +274,10 @@ public class PlcService {
|
|
|
|
if(times == 2){
|
|
|
|
if(times == 2){
|
|
|
|
|
|
|
|
|
|
|
|
if(street.getCamera2Id() != null){
|
|
|
|
if(street.getCamera2Id() != null){
|
|
|
|
gyrateCameraByCodeTimeLater(street.getCamera2Id(),"C5",configProperties.getCameraConfig().getDelayCaptureTime()+100);
|
|
|
|
gyrateCameraByCodeTimeLater(street.getCamera2Id(),"C5",configProperties.getCameraConfig().getC2OutDelayCaptureTime()+500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(street.getCamera1Id() != null){
|
|
|
|
if(street.getCamera1Id() != null){
|
|
|
|
gyrateCameraByCodeTimeLater(street.getCamera1Id(),"C5",configProperties.getCameraConfig().getDelayCaptureTime()+100);
|
|
|
|
gyrateCameraByCodeTimeLater(street.getCamera1Id(),"C5",configProperties.getCameraConfig().getC2OutDelayCaptureTime()+500);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -554,17 +580,35 @@ public class PlcService {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private LightSourceMapper lightSourceMapper;
|
|
|
|
|
|
|
|
|
|
|
|
public Boolean check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){
|
|
|
|
public Boolean check(PlcCmdInfo plcCmdInfo,String cmdCode,String wmsCode,String wmsTrayCode){
|
|
|
|
|
|
|
|
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
|
|
|
|
|
|
|
|
CronTab.putTime(street.getId());
|
|
|
|
|
|
|
|
List<LightSource> lightSources = lightSourceMapper.selectList(new QueryWrapper<LightSource>().eq("street_id",street.getId()));
|
|
|
|
|
|
|
|
lightSources.forEach(lightSource -> {
|
|
|
|
|
|
|
|
HikControlSocket.openLight(lightSource.getIp(),lightSource.getPort(),configProperties.getLightSource().getIndex(),1);
|
|
|
|
|
|
|
|
});
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
|
|
|
|
Integer cameraId = getCameraByPlcCmd(plcCmdInfo,plcCmdInfo.getLeftRight1());
|
|
|
|
gyrateCameraByCode(cameraId, cmdCode);
|
|
|
|
|
|
|
|
try {
|
|
|
|
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
|
|
|
|
//内测
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
String c = cmdCode + "-" + plcCmdInfo.getLeftRightStr(1) + "-IN";
|
|
|
|
e.printStackTrace();
|
|
|
|
log.info("camera ptz"+c);
|
|
|
|
|
|
|
|
gyrateCameraByCode(cameraId, c);
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
gyrateCameraByCode(cameraId, cmdCode);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Thread.sleep(configProperties.getCameraConfig().getDelayCaptureTime());
|
|
|
|
|
|
|
|
} catch (InterruptedException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
|
|
|
|
String path = PathUtil.createFileNameByRowColumn("jpg",cameraId,plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
|
|
|
|
cameraCapture(cameraId,false,null,path);
|
|
|
|
cameraCapture(cameraId,false,null,path);
|
|
|
|
//托盘码
|
|
|
|
//托盘码
|
|
|
|
@ -572,10 +616,10 @@ public class PlcService {
|
|
|
|
Boolean trayCheck = Boolean.TRUE;
|
|
|
|
Boolean trayCheck = Boolean.TRUE;
|
|
|
|
//如果是用扫码枪 扫 托盘码,就直接扫
|
|
|
|
//如果是用扫码枪 扫 托盘码,就直接扫
|
|
|
|
//if(configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
//if(configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
|
|
|
|
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1());
|
|
|
|
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
if(plcCmdInfo.getSeparation1() == 1 && configProperties.getScanCodeMode().getTray() == 2){
|
|
|
|
//托盘使用sick扫码枪
|
|
|
|
//托盘使用sick扫码枪
|
|
|
|
SensorGun sensorGun = sensorService.getSensorByPlc(street.getId(),plcCmdInfo.getLeftRight1());
|
|
|
|
|
|
|
|
if(sensorGun == null){
|
|
|
|
if(sensorGun == null){
|
|
|
|
trayCode = "识别异常";
|
|
|
|
trayCode = "识别异常";
|
|
|
|
trayCheck = Boolean.FALSE;
|
|
|
|
trayCheck = Boolean.FALSE;
|
|
|
|
@ -610,17 +654,92 @@ public class PlcService {
|
|
|
|
//RFID
|
|
|
|
//RFID
|
|
|
|
RFID rfid = rfidService.getRFIDByPlc(street.getId());
|
|
|
|
RFID rfid = rfidService.getRFIDByPlc(street.getId());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties);
|
|
|
|
OrderInfo orderInfo = new OrderInfo(street,plcCmdInfo,1,cmdCode);
|
|
|
|
threadPoolExecutor.execute(stockCheckRunnable);
|
|
|
|
Stock stock = stockMapper.getByShelveIdAndRowColumn(orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn());
|
|
|
|
|
|
|
|
String scanCode = null;
|
|
|
|
|
|
|
|
Boolean codeCheck = Boolean.TRUE;
|
|
|
|
|
|
|
|
Boolean trayCodeCheck = Boolean.TRUE;
|
|
|
|
|
|
|
|
//货物使用球机扫码
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(configProperties.getScanCodeMode().getTray() == 2 && plcCmdInfo.getSeparation1() == 2){
|
|
|
|
|
|
|
|
//托盘使用球机扫码
|
|
|
|
|
|
|
|
if("".equals(wmsTrayCode)){
|
|
|
|
|
|
|
|
//空货物的处理
|
|
|
|
|
|
|
|
//如果系统货物为空,则只要扫码识别未出结果,就认为无货物
|
|
|
|
|
|
|
|
trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes());
|
|
|
|
|
|
|
|
log.info("tray code:{},sys trayCode:{}",trayCode,wmsTrayCode);
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(trayCode)|| trayCode.equals("Unrecognized")){
|
|
|
|
|
|
|
|
trayCheck = Boolean.TRUE;
|
|
|
|
|
|
|
|
trayCode = "";
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
trayCheck = wmsTrayCode.equals(trayCode);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
trayCode = BarcodeDetector.detectBestCodeUntilOK(configProperties.getSavePath().getMediaPath()+path,configProperties.getScanCodeMode().getTrayCodeTypes());
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(trayCode)){
|
|
|
|
|
|
|
|
log.error("row:{},cloumn:{}",plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
|
|
|
|
|
|
|
|
log.error("detectBestBarCode:{}",trayCode);
|
|
|
|
|
|
|
|
trayCode = "识别异常";
|
|
|
|
|
|
|
|
trayCheck = Boolean.FALSE;
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
trayCheck = wmsTrayCode.equals(trayCode);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
log.info("code:{}",scanCode);
|
|
|
|
|
|
|
|
//核对异常
|
|
|
|
|
|
|
|
Integer status = 1;
|
|
|
|
|
|
|
|
//托盘和货物都正确
|
|
|
|
|
|
|
|
if(trayCheck && codeCheck){
|
|
|
|
|
|
|
|
status = 2;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(stock == null){
|
|
|
|
|
|
|
|
stock = new Stock(null,null,plcCmdInfo.getOrderNum(),plcCmdInfo.getLotnum(),scanCode, null,null,wmsCode,null,null,wmsTrayCode,trayCode,orderInfo.getShelveId(),orderInfo.getRow(),orderInfo.getColumn(),status,null,null,path, LocalDateTime.now());
|
|
|
|
|
|
|
|
stockMapper.insert(stock);
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
|
|
stock.setStatus(status);
|
|
|
|
|
|
|
|
stock.setLotnum(plcCmdInfo.getLotnum());
|
|
|
|
|
|
|
|
stock.setExportTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
stock.setCheckPic(path);
|
|
|
|
|
|
|
|
stock.setCheckNum(plcCmdInfo.getOrderNum());
|
|
|
|
|
|
|
|
stock.setTrayCode(trayCode);
|
|
|
|
|
|
|
|
stock.setWmsTrayCode(wmsTrayCode);
|
|
|
|
|
|
|
|
stock.setCode(scanCode);
|
|
|
|
|
|
|
|
stock.setWmsCode(wmsCode);
|
|
|
|
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
checkLog(stock);
|
|
|
|
|
|
|
|
// StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun);
|
|
|
|
|
|
|
|
// threadPoolExecutor.execute(stockCheckRunnable);
|
|
|
|
|
|
|
|
|
|
|
|
long end = System.currentTimeMillis();
|
|
|
|
long end = System.currentTimeMillis();
|
|
|
|
long s = end - startTime;
|
|
|
|
long s = end - startTime;
|
|
|
|
log.info("time:{}millisecond",s);
|
|
|
|
log.info("time:{}millisecond",s);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void checkLog(Stock stock){
|
|
|
|
|
|
|
|
CheckLog checkLog = new CheckLog();
|
|
|
|
|
|
|
|
checkLog.setCheckNum(stock.getCheckNum());
|
|
|
|
|
|
|
|
checkLog.setPic(stock.getCheckPic());
|
|
|
|
|
|
|
|
checkLog.setShelveId(stock.getShelveId());
|
|
|
|
|
|
|
|
checkLog.setCode(stock.getCode());
|
|
|
|
|
|
|
|
checkLog.setWmsCode(stock.getWmsCode());
|
|
|
|
|
|
|
|
checkLog.setStatus(stock.getStatus());
|
|
|
|
|
|
|
|
checkLog.setRow(stock.getRow());
|
|
|
|
|
|
|
|
checkLog.setColumn(stock.getColumn());
|
|
|
|
|
|
|
|
checkLog.setCreateTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
checkLog.setTrayCode(stock.getTrayCode());
|
|
|
|
|
|
|
|
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
|
|
|
|
|
|
|
|
checkLog.setLotnum(stock.getLotnum());
|
|
|
|
|
|
|
|
checkLogMapper.insert(checkLog);
|
|
|
|
|
|
|
|
}
|
|
|
|
public void truncateStock(){
|
|
|
|
public void truncateStock(){
|
|
|
|
stockMapper.truncate();
|
|
|
|
stockMapper.truncate();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ConfigProperties getConfigProperties(){
|
|
|
|
|
|
|
|
return configProperties;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|