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 "任务添加失败,当前有未完成的任务";
}
}
}