package com.mes.bigstoragetask.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper; import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; import com.mes.common.config.Const; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.mapper.TemperingGlassInfoMapper; import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** *

* 服务实现类 *

* * @author zhoush * @since 2024-04-16 */ @Slf4j @Service public class BigStorageCageOutTaskServiceImpl extends ServiceImpl implements BigStorageCageOutTaskService { @Resource TemperingGlassInfoMapper temperingGlassInfoMapper; @Resource BigStorageCageOutTaskMapper bigStorageCageOutTaskMapper; @Resource BigStorageCageDetailsMapper bigStorageCageDetailsMapper; @Resource BigStorageCageDetailsService bigStorageCageDetailsService; @Override public boolean saveBatch(List list) { return baseMapper.saveBatch(list); } /** * 查询任务信息 */ @Override public List querybigStorageCageOutTask(int taskState) { log.info("根据传入的任务状态查询任务信息:" + taskState); LambdaQueryWrapper getOutTaskWrapper = new LambdaQueryWrapper<>(); getOutTaskWrapper.eq(BigStorageCageOutTask::getTaskState, taskState); return baseMapper.selectList(getOutTaskWrapper); } /** * 检测PLC是否完成任务 */ @Override public void updateOutTask() { List bigStorageCageOutTaskList = querybigStorageCageOutTask(1); log.info("查询任务表是否有已完成的出片任务" + bigStorageCageOutTaskList.size()); for (BigStorageCageOutTask bigStorageCageOutTask : bigStorageCageOutTaskList ) { deleteOutTask(bigStorageCageOutTask.getGlassId()); } } /** * 完成出片任务 */ @Override public void deleteOutTask(String glassId) { log.info("根据任务id修改钢化小片表状态,删除已完成的出片任务,删除笼子表玻璃"); LambdaQueryWrapper temperingGlassInfoWrapper = new LambdaQueryWrapper<>(); temperingGlassInfoWrapper.eq(TemperingGlassInfo::getGlassId, glassId); TemperingGlassInfo temperingGlassInfo = temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper); //判断是否手动任务,不钢化任务完成后删掉,钢化任务完成后改状态为0 if (temperingGlassInfo.getState() == -2) { temperingGlassInfoMapper.deleteById(temperingGlassInfo.getId()); } else { temperingGlassInfo.setState(0); temperingGlassInfoMapper.updateById(temperingGlassInfo); } LambdaQueryWrapper bigStorageCageOutTaskWrapper = new LambdaQueryWrapper<>(); bigStorageCageOutTaskWrapper.eq(BigStorageCageOutTask::getGlassId, glassId); BigStorageCageOutTask bigStorageCageOutTask = bigStorageCageOutTaskMapper.selectOne(bigStorageCageOutTaskWrapper); bigStorageCageOutTaskMapper.deleteById(bigStorageCageOutTask.getId()); LambdaQueryWrapper bigStorageCageDetailsWrapper = new LambdaQueryWrapper<>(); bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getGlassId, glassId); BigStorageCageDetails bigStorageCageDetails = bigStorageCageDetailsMapper.selectOne(bigStorageCageDetailsWrapper); bigStorageCageDetailsMapper.deleteById(bigStorageCageOutTask.getId()); } @Override public void deleteTask(List outGlassId) { baseMapper.deleteTask(outGlassId); } @Override public List selectBigStorageCageOutTask(BigStorageCageOutTask bigStorageCageOutTask, String startTime, String endTime) { if (endTime != null && !endTime.isEmpty()) { endTime = endTime + " 23:59:59"; } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (bigStorageCageOutTask.getStartSlot() != null) { wrapper.eq(BigStorageCageOutTask::getStartSlot, bigStorageCageOutTask.getStartSlot()); } if (bigStorageCageOutTask.getWidth() != null) { wrapper.eq(BigStorageCageOutTask::getWidth, bigStorageCageOutTask.getWidth()); } if (bigStorageCageOutTask.getHeight() != null) { wrapper.eq(BigStorageCageOutTask::getHeight, bigStorageCageOutTask.getHeight()); } if (bigStorageCageOutTask.getEndSlot() != 0) { wrapper.eq(BigStorageCageOutTask::getEndSlot, bigStorageCageOutTask.getEndSlot()); } if (bigStorageCageOutTask.getTaskState() != -1) { wrapper.eq(BigStorageCageOutTask::getTaskState, bigStorageCageOutTask.getTaskState()); } if (startTime != null && !startTime.isEmpty()) { wrapper.ge(BigStorageCageOutTask::getCreateTime, startTime); } if (endTime != null && !endTime.isEmpty()) { wrapper.le(BigStorageCageOutTask::getCreateTime, endTime); } wrapper.orderByDesc(BigStorageCageOutTask::getId); wrapper.and(item -> item.eq(BigStorageCageOutTask::getDeleted, 0) .or() .eq(BigStorageCageOutTask::getDeleted, 1)); wrapper.between(BigStorageCageOutTask::getCreateTime, startTime, endTime); return baseMapper.selectList(wrapper); } @Override public String temperingOut(BigStorageCageOutTask bigStorageCageOutTask) { List bigStorageCageOutTaskList = this.list( new LambdaQueryWrapper() .lt(BigStorageCageOutTask::getTaskState, 3) ); if (CollectionUtils.isEmpty(bigStorageCageOutTaskList)) { bigStorageCageOutTask.setTrainNumber(1); bigStorageCageOutTask.setSerialNumber(1); bigStorageCageOutTask.setTaskState(1); this.save(bigStorageCageOutTask); bigStorageCageDetailsService.update( new LambdaUpdateWrapper() .eq(BigStorageCageDetails::getGlassId, bigStorageCageOutTask.getGlassId()) .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) .orderByDesc(BigStorageCageDetails::getId) .last("limit 1") ); return "任务添加成功"; } else { return "任务添加失败,当前有未完成的任务"; } } }