package com.mes.rawglassdetails.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.common.config.Const; import com.mes.rawglassdetails.entity.RawGlassStorageDetails; import com.mes.rawglassdetails.entity.request.RawGlassRequest; import com.mes.rawglassdetails.mapper.RawGlassStorageDetailsMapper; import com.mes.rawglassdetails.service.RawGlassStorageDetailsService; import com.mes.rawglasstask.entity.RawGlassStorageTask; import com.mes.rawglasstask.service.RawGlassStorageTaskService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; /** * @author system * @since 2024-07-09 14:51:27 */ @Service @Slf4j public class RawGlassStorageDetailsServiceImpl extends ServiceImpl implements RawGlassStorageDetailsService { @Autowired RawGlassStorageTaskService rawGlassStorageTaskService; @Override public boolean deleteRawGlassStorageDetails(String device_id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("device_id", device_id); return remove(queryWrapper);//remove才是删除,delete得用另外的依赖,默认方法是remove返回bool } @Override //返回类型 方法名 传输值 public List selectDetails() { // QueryWrapperqueryWrapper=new QueryWrapper<>(); // queryWrapper.eq("id",rs.getId()); // return list(queryWrapper); return list(); } @Override public String warehousingRequest(int leftingStation) { RawGlassStorageDetails storageDetails = getOne(new LambdaQueryWrapper() .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN_ALL)); if (null != storageDetails) { log.info("当前吊装位有架子,结束本地入库请求"); return "fail"; } List shelfList = listBySlotState(Const.RAW_GLASS_DEVICE, Const.RAW_GLASS_STATE_IN_ALL); if (CollectionUtils.isEmpty(shelfList)) { log.info("当前工位不存在可用的空架子"); return "fail"; } Integer shelf = shelfList.get(0); log.info("生成任务"); generateTask(shelf, leftingStation, shelf, 0, Const.RAW_GLASS_TASK_TYPE_IN_REQUEST); //生成一条详情数据 仅记录架子状态 RawGlassStorageDetails details = new RawGlassStorageDetails(); details.setSlot(shelf); details.setShelf(shelf); details.setState(Const.RAW_GLASS_STATE_RUNNING); save(details); return "success"; } @Override public String patternWarehousing(RawGlassRequest request) { RawGlassStorageDetails glassStorageDetails = getOne(new LambdaQueryWrapper() .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .eq(RawGlassStorageDetails::getSlot, request.getSlot())); if (null == glassStorageDetails) { log.info("当前吊装位没有架子"); } //todo:原片信息存入详情表 BeanUtils.copyProperties(request, glassStorageDetails); log.info("覆盖后得到的工位详情信息为:{}", glassStorageDetails); updateById(glassStorageDetails); return "success"; } @Override public String UpdateQuantity(RawGlassRequest request) { update( new LambdaUpdateWrapper() .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity()) .eq(RawGlassStorageDetails::getSlot, request.getSlot()) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)); return "success"; } @Override public String deleteWarehousing(Long slotId) { update(new LambdaUpdateWrapper().eq(RawGlassStorageDetails::getSlot, slotId) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT) .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)); return "success"; } @Override public String outWarehousing(Long slotId) { update(new LambdaUpdateWrapper().eq(RawGlassStorageDetails::getSlot, slotId) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_WAIT_OUT)); //生成一条详情数据 仅记录架子状态 return "success"; } @Override public List listBySlotState(List liftingStation, List state) { return baseMapper.listBySlotState(liftingStation, state); } @Override public String outWarehousingRequest(int leftingStation) { //对应工位是否有空架子 RawGlassStorageDetails details = getOne(new LambdaQueryWrapper().eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN) .eq(RawGlassStorageDetails::getSlot, leftingStation)); if (null == details) { log.info("无空架子,结束本地出片请求"); return "fail"; } //生成一条详情数据 仅记录架子状态 update(new LambdaUpdateWrapper() .eq(RawGlassStorageDetails::getSlot, details.getSlot()) .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN) .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); generateTask(leftingStation, details.getShelf(), details.getShelf(), details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT_REQUEST); return "success"; } /** * 生成原片仓储任务 * * @param startSlot * @param endSlot * @param patternQuantity * @param taskType * @return */ @Override public boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) { RawGlassStorageTask task = RawGlassStorageTask.builder() .startSlot(startSlot) .endSlot(endSlot) .patternQuantity(patternQuantity) .taskType(taskType) .taskState(Const.RAW_GLASS_TASK_NEW) .shelf(shelf) .createTime(new Date()).build(); return rawGlassStorageTaskService.save(task); } }