package com.zy.asrs.service.impl; import com.zy.asrs.mapper.LocAroundBindMapper; import com.zy.asrs.entity.BasDevice; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.param.InitDeviceLocParams; import com.zy.asrs.enums.LocStsType; import com.zy.asrs.service.BasDeviceService; import com.zy.asrs.service.LocAroundBindService; import com.zy.asrs.service.LocMastService; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import java.util.List; import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("locAroundBindService") public class LocAroundBindServiceImpl extends ServiceImpl implements LocAroundBindService { @Autowired private LocMastService locMastService; @Autowired private BasDeviceService basDeviceService; /** * 绑定作业库位 * * @param params * @return */ @Override @Transactional(rollbackFor = Exception.class) public R bindLocs(InitDeviceLocParams params) { // 校验参数 if (Cools.isEmpty(params.getStartRow()) || Cools.isEmpty(params.getEndRow()) || Cools.isEmpty(params.getStartBay()) || Cools.isEmpty(params.getEndBay()) || Cools.isEmpty(params.getStartLev()) || Cools.isEmpty(params.getEndLev())) { return R.error("参数错误"); } BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper() .eq("dev_no", params.getDevNo())); if (Objects.isNull(basDevice)) { return R.error("未查询到该设备"); } List locMasts = locMastService.selectList(new EntityWrapper() .between("row1", params.getStartRow(), params.getEndRow()) .between("bay1", params.getStartBay(), params.getEndBay()) .between("lev1", params.getStartLev(), params.getEndLev()) .ne("loc_sts", LocStsType.LOC_STS_TYPE_X.type)); if (Cools.isEmpty(locMasts)) { return R.error("未查询到符合条件的库位"); } // 校验库位是否已绑定 for (LocMast mast : locMasts) { LocAroundBind aroundBind = this.selectOne(new EntityWrapper() .eq("dev_no", params.getDevNo()) .eq("b_loc_no", mast.getLocNo())); if (!Objects.isNull(aroundBind)) { continue; } LocAroundBind bind = new LocAroundBind(); bind.setDevNo(params.getDevNo()); bind.setBLocNo(mast.getLocNo()); bind.setDevId(basDevice.getId()); if (!this.insert(bind)) { throw new CoolException("绑定库位失败"); } } return R.ok("绑定库位成功"); } }