package com.vincent.rsf.server.manager.schedules;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.vincent.rsf.framework.exception.CoolException;
|
import com.vincent.rsf.server.manager.entity.WaitPakin;
|
import com.vincent.rsf.server.manager.entity.WaitPakinItem;
|
import com.vincent.rsf.server.manager.entity.WaitPakinItemLog;
|
import com.vincent.rsf.server.manager.entity.WaitPakinLog;
|
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
|
import com.vincent.rsf.server.manager.service.WaitPakinItemLogService;
|
import com.vincent.rsf.server.manager.service.WaitPakinItemService;
|
import com.vincent.rsf.server.manager.service.WaitPakinLogService;
|
import com.vincent.rsf.server.manager.service.WaitPakinService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Component
|
public class PakinSchedules {
|
|
@Autowired
|
private WaitPakinService waitPakinService;
|
@Autowired
|
private WaitPakinItemService waitPakinItemService;
|
@Autowired
|
private WaitPakinLogService waitPakinLogService;
|
@Autowired
|
private WaitPakinItemLogService waitPakinItemLogService;
|
|
/**
|
* @param
|
* @return
|
* @author Ryan
|
* @description 组拖历史档
|
* @time 2025/3/29 12:36
|
*/
|
@Scheduled(cron = "0/25 * * * * ?")
|
@Transactional(rollbackFor = Exception.class)
|
public void pakinLog() {
|
List<WaitPakin> pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
|
.eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_DONE.val)
|
.select(WaitPakin::getId));
|
if (pakinIds.isEmpty()) {
|
return;
|
}
|
List<Long> list = pakinIds.stream().map(WaitPakin::getId).collect(Collectors.toList());
|
List<WaitPakin> pakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().in(WaitPakin::getId, list));
|
if (pakins.isEmpty()) {
|
throw new CoolException("组拖单为空!!");
|
}
|
pakins.forEach(pakin -> {
|
WaitPakinLog log = new WaitPakinLog();
|
BeanUtils.copyProperties(pakin, log);
|
log.setPakinId(pakin.getId()).setIoStatus(PakinIOStatus.PAKIN_IO_STATUS_TASK_DONE.val);
|
|
if (!waitPakinLogService.save(log)) {
|
throw new CoolException("组托日志保存失败!!");
|
}
|
List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().in(WaitPakinItem::getPakinId, pakin.getId()));
|
if (pakinItems.isEmpty()) {
|
throw new CoolException("组拖明细为空!!");
|
}
|
List<WaitPakinItemLog> itemLogs = new ArrayList<>();
|
|
pakinItems.forEach(item -> {
|
WaitPakinItemLog itemLog = new WaitPakinItemLog();
|
BeanUtils.copyProperties(item, itemLog);
|
itemLog.setPakinItemId(item.getId())
|
.setLogId(log.getId())
|
.setQty(item.getWorkQty())
|
.setWorkQty(0.0)
|
.setPakinId(item.getPakinId());
|
itemLogs.add(itemLog);
|
});
|
|
if (!waitPakinItemLogService.saveBatch(itemLogs)) {
|
throw new CoolException("历史明细档保存失败!!");
|
}
|
});
|
|
if (!waitPakinService.removeByIds(list)) {
|
throw new CoolException("原单据删除失败!!");
|
}
|
if (!waitPakinItemService.remove(new LambdaQueryWrapper<WaitPakinItem>().in(WaitPakinItem::getPakinId, list))) {
|
throw new CoolException("原单据明细删除失败!!");
|
}
|
}
|
}
|