自动化立体仓库 - WMS系统
skyouc
18 小时以前 f97251d71f83423d561c582ec5576a7451895af6
任务档定时任务修改
6个文件已修改
169 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/TaskMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/TaskService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskMapper.java
@@ -5,8 +5,11 @@
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface TaskMapper extends BaseMapper<Task> {
    List<Task> selectToBeCompleteData();
}
src/main/java/com/zy/asrs/service/TaskService.java
@@ -3,6 +3,8 @@
import com.zy.asrs.entity.Task;
import com.baomidou.mybatisplus.service.IService;
import java.util.List;
public interface TaskService extends IService<Task> {
    void completeWrkMast(String workNo, Long userId);
@@ -10,4 +12,6 @@
    void cancelWrkMast(String workNo, Long userId);
    void pickWrkMast(String workNo, Long userId);
    List<Task> selectToBeCompleteData();
}
src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -14,6 +14,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -31,12 +32,11 @@
    private TaskDetlService taskDetlService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private TaskDetlLogService taskDetlLogService;
    @Override
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public void completeWrkMast(String workNo, Long userId) {
        Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
        if (Cools.isEmpty(wrkMast)) {
@@ -121,6 +121,10 @@
        }
    }
    @Override
    public List<Task> selectToBeCompleteData() {
        return this.baseMapper.selectToBeCompleteData();
    }
    @Override
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,6 +1,8 @@
package com.zy.asrs.task;
import com.zy.asrs.entity.Task;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.TaskService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.handler.WorkMastHandler;
@@ -25,6 +27,8 @@
    private WrkMastService wrkMastService;
    @Autowired
    private WorkMastHandler workMastHandler;
    @Autowired
    private TaskService taskService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
@@ -45,4 +49,23 @@
        }
    }
    @Scheduled(cron = "0/3 * * * * ? ")
    private void executeTask(){
        List<Task> wrkMasts = taskService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return;
        }
        for (Task wrkMast : wrkMasts) {
            ReturnT<String> returnT = workMastHandler.AgvStart(wrkMast);
            if (!returnT.isSuccess()) {
                wrkMast.setUpdMk("X");
                wrkMast.setErrorMemo(returnT.getMsg());
                wrkMast.setErrorTime(new Date());
                if (!taskService.updateById(wrkMast)) {
                    log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo());
                }
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -48,6 +48,8 @@
    private LocCacheService locCacheService;
    @Autowired
    private OrderPakinService orderPakinService;
    @Autowired
    private TaskService taskService;
    public ReturnT<String> start(WrkMast wrkMast) {
        // 4.入库完成
@@ -60,65 +62,8 @@
        return SUCCESS;
    }
    public ReturnT<String> doIn(WrkMast wrkMast) {
        if (wrkMast.getTaskType().equals("agv")) {
            Date now = new Date();
            LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
            if (Objects.isNull(locCache)) {
                throw new CoolException("数据错误,库位不存在!!");
            }
            List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
            if (Objects.isNull(apallet)) {
                throw new CoolException("数据错误:组托数据不存在!!");
            }
            apallet.forEach(pakin -> {
                LocDetl detl = new LocDetl();
                BeanUtils.copyProperties(pakin, detl);
                detl.setBarcode(pakin.getBarcode())
                        .setAnfme(pakin.getAnfme())
                        .setBrand(pakin.getBrand())
                        .setAppeTime(new Date())
                        .setSpecs(pakin.getSpecs())
                        .setColor(pakin.getColor())
                        .setLocId(locCache.getId())
                        .setLocNo(locCache.getLocNo())
                        .setAreaId(locCache.getAreaId())
                        .setAreaName(locCache.getAreaName())
                        .setUnit(pakin.getUnit())
                        .setBatch(pakin.getBatch());
                if (!locDetlService.insert(detl)) {
                    throw new CoolException("库位明细保存失败!!");
                }
            });
            locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
            locCache.setModiTime(new Date());
            locCache.setBarcode("");
            locCache.setModiTime(new Date());
            locCache.setIoTime(new Date());
            if (!locCacheService.updateById(locCache)) {
                throw new CoolException("库位状态修改失败!");
            }
            wrkMast.setWrkSts(5L);
            wrkMast.setModiTime(new Date());
            if (!wrkMastService.updateById(wrkMast)) {
                throw new CoolException("任务状态修改失败!!");
            }
            Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
            List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
            if (Objects.isNull(pakins) || pakins.isEmpty()) {
                throw new CoolException("单据不存在!!");
            }
            pakins.forEach(orderPakin -> {
                orderPakin.setSettle(4L);
                if (!orderPakinService.updateById(orderPakin)) {
                    throw new CoolException("单据修改失败!!");
                }
            });
        } else {
            Date now = new Date();
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
            try {
@@ -485,7 +430,7 @@
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            }
        }
        return SUCCESS;
    }
@@ -623,4 +568,69 @@
        return SUCCESS;
    }
    /**
     * @author Ryan
     * @date 2025/9/23
     * @description: AGV任务完成加入历史档
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public ReturnT<String> AgvStart(Task wrkMast) {
        Date now = new Date();
        LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
        if (Objects.isNull(locCache)) {
            throw new CoolException("数据错误,库位不存在!!");
        }
        List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
        if (Objects.isNull(apallet)) {
            throw new CoolException("数据错误:组托数据不存在!!");
        }
        apallet.forEach(pakin -> {
            LocDetl detl = new LocDetl();
            BeanUtils.copyProperties(pakin, detl);
            detl.setBarcode(pakin.getBarcode())
                    .setAnfme(pakin.getAnfme())
                    .setBrand(pakin.getBrand())
                    .setAppeTime(new Date())
                    .setSpecs(pakin.getSpecs())
                    .setColor(pakin.getColor())
                    .setLocId(locCache.getId())
                    .setLocNo(locCache.getLocNo())
                    .setAreaId(locCache.getAreaId())
                    .setAreaName(locCache.getAreaName())
                    .setUnit(pakin.getUnit())
                    .setBatch(pakin.getBatch());
            if (!locDetlService.insert(detl)) {
                throw new CoolException("库位明细保存失败!!");
            }
        });
        locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
        locCache.setModiTime(new Date());
        locCache.setBarcode("");
        locCache.setModiTime(new Date());
        locCache.setIoTime(new Date());
        if (!locCacheService.updateById(locCache)) {
            throw new CoolException("库位状态修改失败!");
        }
        wrkMast.setWrkSts(5L);
        wrkMast.setModiTime(new Date());
        if (!taskService.updateById(wrkMast)) {
            throw new CoolException("任务状态修改失败!!");
        }
        Set<Long> list = apallet.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
        List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
        if (Objects.isNull(pakins) || pakins.isEmpty()) {
            throw new CoolException("单据不存在!!");
        }
        pakins.forEach(orderPakin -> {
            orderPakin.setSettle(4L);
            if (!orderPakinService.updateById(orderPakin)) {
                throw new CoolException("单据修改失败!!");
            }
        });
        return SUCCESS;
    }
}
src/main/resources/mapper/TaskMapper.xml
@@ -8,5 +8,8 @@
        <result column="task_type" property="taskType" />
    </resultMap>
    <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
        select * from agv_task where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
    </select>
</mapper>