RFID盘点协议

nanjing-zhongyan
yiming 3 years ago
parent 954f7299e9
commit edd098f114

@ -13,7 +13,10 @@ import com.zhehekeji.web.service.RFID.RFIDSocket;
import com.zhehekeji.web.service.hikLightSource.HikControlSocket; 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.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -546,6 +549,30 @@ public class PlcService {
@Resource @Resource
private LightSourceMapper lightSourceMapper; private LightSourceMapper lightSourceMapper;
public void updateStock(PlcCmdInfo plcCmdInfo,String wmsTrayCode){
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),plcCmdInfo.getLeftRight1(),plcCmdInfo.getSide1(),plcCmdInfo.getRow1(),plcCmdInfo.getColumn1());
if(stock == null){
stock = new Stock();
stock.setStreetId(street.getId());
stock.setDirection(plcCmdInfo.getLeftRight1());
stock.setSide(plcCmdInfo.getSide1());
stock.setRow(plcCmdInfo.getRow1());
stock.setColumn(plcCmdInfo.getColumn1());
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setWmsTrayCode(wmsTrayCode);
stock.setExportTime(LocalDateTime.now());
stockMapper.insert(stock);
return;
}
stock.setLotnum(plcCmdInfo.getLotnum());
stock.setWmsTrayCode(wmsTrayCode);
stock.setExportTime(LocalDateTime.now());
stockMapper.updateById(stock);
}
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();
@ -723,7 +750,7 @@ public class PlcService {
RFIDMap.put(streetId,rfidSocket); RFIDMap.put(streetId,rfidSocket);
} }
public Set<String> RFIDStop(PlcCmdInfo plcCmdInfo){ public Set<String> RFIDStop(PlcCmdInfo plcCmdInfo,Integer row){
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId()); Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
RFIDSocket rfidSocket = RFIDMap.get(street.getId()); RFIDSocket rfidSocket = RFIDMap.get(street.getId());
Set<String> tags = null; Set<String> tags = null;
@ -733,6 +760,8 @@ public class PlcService {
rfidSocket.close(); rfidSocket.close();
RFIDMap.remove(street.getId()); RFIDMap.remove(street.getId());
} }
Thread thread = new StockUpdater(street.getId(),plcCmdInfo.getPlcId(),row,stockMapper,tags);
thread.start();
return tags; return tags;
} }
@ -740,4 +769,7 @@ public class PlcService {
return configProperties; return configProperties;
} }
} }

@ -0,0 +1,58 @@
package com.zhehekeji.web.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhehekeji.web.entity.Stock;
import com.zhehekeji.web.mapper.StockMapper;
import com.zhehekeji.web.service.ksec.KsecDataInfo;
import com.zhehekeji.web.service.ksec.KsecInfo;
import com.zhehekeji.web.service.ksec.KsecNettyClient;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
@AllArgsConstructor
@Data
public class StockUpdater extends Thread{
private Integer streetId;
private String SRMNUmber;
private Integer row;
private StockMapper stockMapper;
private Set<String> tags;
@Override
public void run() {
//查找该行所有的
List<Stock> stockList = stockMapper.selectList(new QueryWrapper<Stock>().eq("street_id",streetId).eq("`row`",row));
for(Stock stock: stockList){
Stock update = new Stock();
update.setId(stock.getId());
update.setExportTime(LocalDateTime.now());
if(tags.contains(stock.getWmsTrayCode())){
update.setTrayCode(stock.getWmsTrayCode());
update.setStatus(2);
}else {
update.setStatus(1);
}
stockMapper.updateById(update);
//回复给盘点系统
KsecDataInfo ksecDataInfo = new KsecDataInfo();
ksecDataInfo.setCmdName("E4");
ksecDataInfo.setCheck(update.getStatus());
ksecDataInfo.setFromDirection(stock.getDirection());
ksecDataInfo.setFromRow(stock.getRow());
ksecDataInfo.setFromSide(stock.getSide());
ksecDataInfo.setLotnum(stock.getLotnum());
ksecDataInfo.setSRMNumber(SRMNUmber);
KsecInfo ksecInfo = new KsecInfo("LP","E",ksecDataInfo);
KsecNettyClient.write(ksecInfo);
}
}
}

@ -34,13 +34,12 @@ public class KsecDataInfo {
private Integer toSeparation; private Integer toSeparation;
private String code;
private String warnCode; private String warnCode;
private Integer ackStatus;
private String trayCodes; private String wmsTrayCode;
private String trayCode;
private Integer row; private Integer row;
@ -51,12 +50,4 @@ public class KsecDataInfo {
*/ */
private String lotnum; private String lotnum;
public Set<String> getAllTrayCodes(){
String [] strings = trayCodes.split(",");
Set<String> sets = new HashSet<>();
for(int i = 0;i<strings.length;i++){
sets.add(strings[i]);
}
return sets;
}
} }

@ -108,7 +108,6 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
}else { }else {
log.info("check move"); log.info("check move");
} }
} else if (Cmd.B2.name().equals(cmdName)) { } else if (Cmd.B2.name().equals(cmdName)) {
//B2 C4 一起发的需要停止等B2 //B2 C4 一起发的需要停止等B2
@ -195,17 +194,22 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
if("E1".equals(code)){ if("E1".equals(code)){
plcService.RFIDCheck(plcCmdInfo); plcService.RFIDCheck(plcCmdInfo);
}else if("E2".equals(code)){ }else if("E2".equals(code)){
Set<String> scanCodes = plcService.RFIDStop(plcCmdInfo); //E2是货架标签保存之
if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){ plcService.updateStock(plcCmdInfo, dataInfo.getWmsTrayCode());
dataInfo.setCheck(1); // Set<String> scanCodes = plcService.RFIDStop(plcCmdInfo);
}else { // if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){
dataInfo.setCheck(0); // dataInfo.setCheck(1);
} // }else {
dataInfo.setTrayCodes(null); // dataInfo.setCheck(0);
dataInfo.setCmdName("E3"); // }
ksecInfo.setHeader("LP"); // dataInfo.setTrayCodes(null);
ksecInfo.setData(dataInfo); // dataInfo.setCmdName("E3");
ctx.channel().writeAndFlush(ksecInfo); // ksecInfo.setHeader("LP");
// ksecInfo.setData(dataInfo);
// ctx.channel().writeAndFlush(ksecInfo);
}else if("E3".equals(code)){
//跑位结束
} }
} }

Loading…
Cancel
Save