pjb
2025-03-08 83b51a5a0774ea8ecb9a06304af3b956a21307c8
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -20,10 +20,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
@Component
public class TaskWaveTimer {
@@ -45,6 +42,11 @@
    @Autowired
    private DictService dictService;
    /**
     * modifty:
     * original : fetch datasource of task type on WCS_EXECUTE_OUT_TASK_DONE
     * now: Fetch datasource of task type  on WCS_EXECUTE_OUT_ARRIVED, After completing the task and for setting  the task type equal to GENERATE_WAVE_SEED
     */
    @Scheduled(cron = "0/15 * * * * ? ")
    @Transactional(rollbackFor = Exception.class)
    public void taskWave() {
@@ -58,8 +60,10 @@
            if (!autoCreateWaveSeed.equals("true")) {
                return;
            }
            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
            //查询状态为RCS任务完成所有任务单据
//            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WAVE_SEED.id));
            List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.WCS_EXECUTE_OUT_TASK_DONE.id));
            HashSet<String> sycMatnrs = new HashSet<>();
            if (taskList.isEmpty()) {
//                throw new CoolException("没有可播种任务!!");
            } else {
@@ -74,6 +78,12 @@
                    for (TaskDetl taskDetl : taskDetls) {
                        //分配订单
                        Long waveId = taskDetl.getWaveId();
                        //同一个物料只添加一次播种任务
                        if(sycMatnrs.contains(taskDetl.getMatnr())) {
                            continue;
                        }
                        sycMatnrs.add(taskDetl.getMatnr());
                        List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, waveId));
                        if (list.isEmpty()) {
                            continue;
@@ -107,21 +117,23 @@
                            anfme -= workQty;
                            orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
                            if (cacheSite == null) {
                                throw new CoolException("缓存站空间不存在");
                            }
//
                            //fixme 生成波次播种数据时,不自动添加站点绑定,站点绑定调整至出库绑定播种库位时更新
//                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
//                            if (cacheSite == null) {
//                                throw new CoolException("缓存站空间不存在");
//                            }
                            WaveSeed waveSeed = new WaveSeed();
                            waveSeed.setSiteId(cacheSite.getId());
                            waveSeed.setSiteNo(cacheSite.getSiteNo());
//                            waveSeed.setSiteId(cacheSite.getId());
//                            waveSeed.setSiteNo(cacheSite.getSiteNo());
                            waveSeed.setOrderNo(orderDetl.getOrderNo());
                            waveSeed.setOrderId(orderDetl.getOrderId());
                            waveSeed.setOrderDetlId(orderDetl.getId());
                            waveSeed.setWaveId(taskDetl.getWaveId()).setWaveNo(taskDetl.getWaveNo());
                            waveSeed.setTaskDetlId(taskDetl.getId());
                            waveSeed.setAnfme(taskDetl.getAnfme());
                            //为满足当前需求,经确认,改成订单数量
                            waveSeed.setAnfme(orderDetl.getAnfme());
                            waveSeed.setWorkQty(0D);
                            waveSeed.setMatnr(taskDetl.getMatnr());
                            waveSeed.setBatch(taskDetl.getBatch());
@@ -130,20 +142,18 @@
                            if (!waveSeedService.save(waveSeed)) {
                                throw new CoolException("波次播种创建失败");
                            }
                            cacheSite.setOrderId(orderDetl.getOrderId());
                            cacheSite.setOrderNo(orderDetl.getOrderNo());
                            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
                            cacheSite.setUpdateTime(new Date());
                            if (!cacheSiteService.updateById(cacheSite)) {
                                throw new CoolException("缓存站更新失败");
                            }
//                            cacheSite.setOrderId(orderDetl.getOrderId());
//                            cacheSite.setOrderNo(orderDetl.getOrderNo());
//                            cacheSite.setSiteStatus(CacheSiteStatusType.R.id);
//                            cacheSite.setUpdateTime(new Date());
//                            if (!cacheSiteService.updateById(cacheSite)) {
//                                throw new CoolException("缓存站更新失败");
//                            }
                        }
                    }
                    task.setTaskSts(TaskStsType.COMPLETE_OUT.id);
                    task.setTaskSts(TaskStsType.GENERATE_WAVE_SEED.id);
                    task.setUpdateTime(new Date());
                    if (!taskService.updateById(task)) {
                        throw new CoolException("任务更新失败");