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.ksec.KsecNettyClient;
import com.zhehekeji.web.service.sick.SickSocket;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@ -546,6 +549,30 @@ public class PlcService {
@Resource
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){
long startTime = System.currentTimeMillis();
@ -723,7 +750,7 @@ public class PlcService {
RFIDMap.put(streetId,rfidSocket);
}
public Set<String> RFIDStop(PlcCmdInfo plcCmdInfo){
public Set<String> RFIDStop(PlcCmdInfo plcCmdInfo,Integer row){
Street street = streetService.getStreetByPlcId(plcCmdInfo.getPlcId());
RFIDSocket rfidSocket = RFIDMap.get(street.getId());
Set<String> tags = null;
@ -733,6 +760,8 @@ public class PlcService {
rfidSocket.close();
RFIDMap.remove(street.getId());
}
Thread thread = new StockUpdater(street.getId(),plcCmdInfo.getPlcId(),row,stockMapper,tags);
thread.start();
return tags;
}
@ -740,4 +769,7 @@ public class PlcService {
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 String code;
private String warnCode;
private Integer ackStatus;
private String trayCodes;
private String wmsTrayCode;
private String trayCode;
private Integer row;
@ -51,12 +50,4 @@ public class KsecDataInfo {
*/
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 {
log.info("check move");
}
} else if (Cmd.B2.name().equals(cmdName)) {
//B2 C4 一起发的需要停止等B2
@ -195,17 +194,22 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
if("E1".equals(code)){
plcService.RFIDCheck(plcCmdInfo);
}else if("E2".equals(code)){
Set<String> scanCodes = plcService.RFIDStop(plcCmdInfo);
if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){
dataInfo.setCheck(1);
}else {
dataInfo.setCheck(0);
}
dataInfo.setTrayCodes(null);
dataInfo.setCmdName("E3");
ksecInfo.setHeader("LP");
ksecInfo.setData(dataInfo);
ctx.channel().writeAndFlush(ksecInfo);
//E2是货架标签保存之
plcService.updateStock(plcCmdInfo, dataInfo.getWmsTrayCode());
// Set<String> scanCodes = plcService.RFIDStop(plcCmdInfo);
// if(scanCodes.containsAll(dataInfo.getAllTrayCodes())){
// dataInfo.setCheck(1);
// }else {
// dataInfo.setCheck(0);
// }
// dataInfo.setTrayCodes(null);
// dataInfo.setCmdName("E3");
// ksecInfo.setHeader("LP");
// ksecInfo.setData(dataInfo);
// ctx.channel().writeAndFlush(ksecInfo);
}else if("E3".equals(code)){
//跑位结束
}
}

Loading…
Cancel
Save