package com.vincent.rsf.server.api.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.vincent.rsf.framework.common.Cools;
|
import com.vincent.rsf.framework.common.R;
|
import com.vincent.rsf.framework.exception.CoolException;
|
import com.vincent.rsf.server.api.service.AgvService;
|
import com.vincent.rsf.server.manager.entity.BasStation;
|
import com.vincent.rsf.server.manager.entity.WaitPakin;
|
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
|
import com.vincent.rsf.server.manager.enums.StaUseStatusType;
|
import com.vincent.rsf.server.manager.service.BasStationService;
|
import com.vincent.rsf.server.manager.service.WaitPakinService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class AgvServiceImpl implements AgvService {
|
|
@Autowired
|
private WaitPakinService waitPakinService;
|
@Autowired
|
private BasStationService basStationService;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R getAGVStaBind(Map<String, Object> params) {
|
String barcode = params.get("barcode").toString();
|
String sta = params.get("sta").toString();
|
//验证基础信息
|
BasStation basStation = checkStaStatus(barcode, sta);
|
//更新站点状态
|
basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
|
basStation.setBarcode(barcode);
|
if (!basStationService.updateById(basStation)){
|
throw new CoolException("更新站点状态失败");
|
}
|
return R.ok("绑定成功");
|
}
|
|
private BasStation checkStaStatus(String barcode, String sta){
|
if (Cools.isEmpty(barcode)){
|
throw new CoolException("容器码不能为空");
|
}
|
if (Cools.isEmpty(sta)){
|
throw new CoolException("接驳位条码不能为空");
|
}
|
WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
|
.eq(WaitPakin::getBarcode, barcode)
|
.eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
|
);
|
if (Cools.isEmpty(waitPakin)){
|
throw new CoolException("容器码未找到组托信息,请检查组托状态");
|
}
|
BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
|
.eq(BasStation::getBarcode, barcode)
|
,false
|
);
|
if (!Cools.isEmpty(isBarcodeSta)){
|
throw new CoolException("该条码已被"+isBarcodeSta.getStationName()+"站绑定");
|
}
|
BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
|
.eq(BasStation::getStationName, sta)
|
);
|
if (Cools.isEmpty(basStation)){
|
throw new CoolException("未找到站点信息");
|
}
|
if (!basStation.getUseStatus().equals("O")){
|
throw new CoolException("站点状态不为空闲");
|
}
|
return basStation;
|
}
|
}
|