package com.mes.rawusage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.rawusage.mapper.RawUsageMapper; import com.mes.rawusage.entity.RawUsage; import com.mes.rawusage.service.RawUsageService; import com.mes.shelfrack.entity.ShelfRack; import com.mes.shelfrack.entity.request.RawUsageAndShelfRack; import com.mes.shelfrack.mapper.ShelfRackMapper; import com.mes.storagetask.entity.StorageTask; import com.mes.storagetask.mapper.StorageTaskMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.lang.reflect.InvocationTargetException; import java.time.LocalDateTime; import java.util.List; import static cn.hutool.core.date.DateTime.now; /** * @author system * @since 2024-07-09 14:51:27 */ @Service public class RawUsageServiceImpl extends ServiceImpl implements RawUsageService { @Autowired private RawUsageMapper rawUsageMapper; @Autowired private ShelfRackMapper shelfRackMapper; @Autowired private StorageTaskMapper storageTaskMapper; @Override public List findList(RawUsage params){ LambdaQueryWrapper query = Wrappers.lambdaQuery(RawUsage.class); return rawUsageMapper.selectList(query); } @Override public void updateRawPackageAndStorageRack(RawUsage raw) { // Step 1: 查询raw_package_id LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, raw.getId()); ShelfRack shelfRack = shelfRackMapper.selectOne(queryWrapper); if (shelfRack == null) { throw new RuntimeException("未找到与指定货架ID关联的原料包信息"); } // Step 2: 更新raw_package表 RawUsage rawUsage=new RawUsage(); rawUsage.setState("空闲"); rawUsage.setId(shelfRack.getRawPackageId()); rawUsageMapper.updateById(rawUsage); // Step 3: 更新storage_rack表 ShelfRack rack = new ShelfRack(); rack.setState("空闲"); rack.setRawPackageId(null); // 设置RawPackageId为特定的空值,例如0 LambdaQueryWrapper queryWrapper2 = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, raw.getId()); shelfRackMapper.update(rack, queryWrapper2); } @Override public void inStorage(RawUsageAndShelfRack raw) { RawUsage rawPackage = new RawUsage(); BeanUtils.copyProperties(raw,rawPackage); rawPackage.setRawType(raw.getRawThickness() + raw.getColor()); rawPackage.setState("使用中"); rawPackage.setLeftPieces(rawPackage.getPieces()); rawUsageMapper.insert(rawPackage); // 更新架表 ShelfRack rack = new ShelfRack(); rack.setState("使用中"); rack.setRawPackageId(rawPackage.getId()); // 设置RawPackageId为特定的空值,例如0 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, raw.getNumber()); shelfRackMapper.update(rack, queryWrapper); StorageTask storageTask=new StorageTask(); storageTask.setTaskState("等待中"); storageTask.setTaskType("从仓位到吊装位"); storageTask.setLoadRack(raw.getLoadRack()); storageTask.setShelfRack(raw.getNumber()); storageTask.setRouteGroup(1); storageTask.setStartTime(now()); storageTask.setFinishTime(now()); insertTask(storageTask); } @Override public void outStorage(RawUsageAndShelfRack raw) { ShelfRack rack = new ShelfRack(); rack.setState("等待出库"); rack.setRawPackageId(null); // 设置RawPackageId为特定的空值,例如0 LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(ShelfRack.class) .eq(ShelfRack::getNumber, raw.getNumber()); shelfRackMapper.update(rack, queryWrapper); StorageTask storageTask=new StorageTask(); storageTask.setTaskState("等待中"); storageTask.setTaskType("从仓位到吊装位"); storageTask.setLoadRack(raw.getLoadRack()); storageTask.setShelfRack(raw.getNumber()); storageTask.setRouteGroup(1); storageTask.setStartTime(now()); storageTask.setFinishTime(now()); insertTask(storageTask); } public void insertTask(StorageTask storageTask) { storageTaskMapper.insert(storageTask); } }