自动化立体仓库 - WMS系统
zyx
2023-07-17 344a6d6c8c0f27f883615eb01d99ecc019aa7b25
src/main/java/com/zy/asrs/service/impl/AgvBasDevpServiceImpl.java
@@ -4,8 +4,80 @@
import com.zy.asrs.entity.AgvBasDevp;
import com.zy.asrs.mapper.AgvBasDevpMapper;
import com.zy.asrs.service.AgvBasDevpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
@Transactional
public class AgvBasDevpServiceImpl extends ServiceImpl<AgvBasDevpMapper, AgvBasDevp> implements AgvBasDevpService {
    @Autowired
    AgvBasDevpMapper agvBasDevpMapper;
    public void clearBasDevp(){
        agvBasDevpMapper.deleteAll();
    }
    public void initBasDevp(){
        //初始化1楼缓存货架站点 2排5列3层
        this.insertBatch(getCacheBasDevpList(1,2,1,5,1,3,1));
        //初始化3楼缓存货架站点 3排5列3层
        this.insertBatch(getCacheBasDevpList(5,7,1,5,1,3,3));
        //初始化3楼输送线工作站点 4个站点
        this.insertBatch(getLineBasDevpList());
    }
    private List<AgvBasDevp> getLineBasDevpList(){
        List<AgvBasDevp> agvBasDevpList = new ArrayList<>();
        Date now = new Date();
        for(int row=1; row<=4; row++){
            agvBasDevpList.add(getAgvBasDevp(row,1,1,3,"N",now));
        }
        return agvBasDevpList;
    }
    //根据排列层获取AGV缓存货架站点列表
    private List<AgvBasDevp> getCacheBasDevpList(int rowIndex, int rowMax, int bayIndex, int bayMax, int levIndex, int levMax, int floor){
        List<AgvBasDevp> agvBasDevpList = new ArrayList<>();
        Date now = new Date();
        for(int row=rowIndex; row<=rowMax; row++){
            for(int bay=bayIndex; bay<=bayMax; bay++){
                for(int lev=levIndex; lev<=levMax; lev++){
                    agvBasDevpList.add(getAgvBasDevp(row,bay,lev,floor,"Y",now));
                }
            }
        }
        return agvBasDevpList;
    }
    private AgvBasDevp getAgvBasDevp(int row, int bay, int lev, int floor, String cacheShelves, Date now){
        AgvBasDevp agvBasDevp = new AgvBasDevp();
        String devNo = "CS-" + floor + "0" + row + "-00" + bay + "-0" + lev + "@" + floor;
        String stationCode = "CS-" + floor + "0" + row;
        agvBasDevp.setDevNo(devNo);
        agvBasDevp.setStationCode(stationCode);
        agvBasDevp.setLocSts("O");
        agvBasDevp.setCacheShelves(cacheShelves);
        agvBasDevp.setFloor(floor);
        agvBasDevp.setModiTime(now);
        agvBasDevp.setAppeTime(now);
        return agvBasDevp;
    }
    public void updateLocStsAndBarcodeByDevNo(String devNo, String locSts, String barcode){
        AgvBasDevp agvBasDevp = this.selectById(devNo);
        agvBasDevp.setLocSts(locSts);
        agvBasDevp.setBarcode(barcode);
        this.updateById(agvBasDevp);
    }
}