pjb
2025-03-08 83b51a5a0774ea8ecb9a06304af3b956a21307c8
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -9,7 +9,6 @@
import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
import com.zy.asrs.wms.asrs.service.*;
import io.jsonwebtoken.lang.Collections;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
@@ -17,11 +16,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Component
@@ -67,6 +63,9 @@
    private CacheSiteService cacheSiteService;
    /**
     * 入库执行任务
     */
    @Scheduled(cron = "0/3 * * * * ? ")
    @Transactional(rollbackFor = Exception.class)
    public void inExecute() {
@@ -110,11 +109,12 @@
    /**
     * // fixme 舍弃
     * 1. 定时拉取需要执行回库任务列表数据,
     * 2. 删除原始库位明细,原始库位状态置成O.空库
     * 3.
     */
    @Scheduled(cron = "0/3 * * * * ? ")
//    @Scheduled(cron = "0/3 * * * * ? ")
    @Transactional(rollbackFor = Exception.class)
    public void rollbackStock() {
        //获取需要执行回库的任务,更新库存信息
@@ -325,9 +325,7 @@
    //拣料再入库
    private void executeTask53(Task task) {
        Long hostId = task.getHostId();
        //fixme 将任务当前
        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
//        Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()));
        if (loc == null) {
            throw new CoolException("库位不存在");
        }
@@ -339,6 +337,7 @@
        loc.setLocStsId(LocStsType.F.val());
        loc.setUpdateTime(new Date());
        loc.setBarcode(task.getBarcode());
        if (!locService.updateById(loc)) {
            throw new CoolException("库位状态更新失败");
        }
@@ -348,37 +347,35 @@
            throw new CoolException("任务明细不存在");
        }
        //添加库存明细
        //修改库存明细
        for (TaskDetl taskDetl : taskDetls) {
            double anfme = taskDetl.getStock() - taskDetl.getAnfme();
            if (anfme <= 0) {
                continue;
            }
                LocDetl  locdetl =  locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
                        .eq(LocDetl::getLocId, loc.getId())
                        .eq(LocDetl::getBatch, taskDetl.getBatch())
                        .eq(LocDetl::getMatId, taskDetl.getMatId()));
            LocDetl locDetl = new LocDetl();
            locDetl.setLocId(loc.getId());
            locDetl.setLocNo(loc.getLocNo());
            locDetl.setMatId(taskDetl.getMatId());
            locDetl.setMatnr(taskDetl.getMat$().getMatnr());
            locDetl.setOrderNo(taskDetl.getOrderNo());
            locDetl.setBatch(taskDetl.getBatch());
            locDetl.setAnfme(anfme);
            locDetl.setHostId(hostId);
            if (!locDetlService.save(locDetl)) {
                throw new CoolException("插入库存明细失败");
            }
                List<LocDetlField> detlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locdetl.getId()).eq(LocDetlField::getHostId, hostId));
                if (!detlFields.isEmpty()) {
                    if (!locDetlFieldService.removeBatchByIds(detlFields)) {
                        throw new CoolException("删除明细扩展字段失败");
                    }
                }
            //添加库存明细扩展字段
            List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
            for (TaskDetlField detlField : detlFields) {
                LocDetlField locDetlField = new LocDetlField();
                locDetlField.setDetlId(locDetl.getId());
                locDetlField.setFieldId(detlField.getFieldId());
                locDetlField.setName(detlField.getName());
                locDetlField.setValue(detlField.getValue());
                locDetlField.setHostId(hostId);
                if (!locDetlFieldService.save(locDetlField)) {
                    throw new CoolException("插入明细扩展字段失败");
                if (!locDetlService.removeById(locdetl)) {
                    throw new CoolException("库存明细删除失败!!");
                }
            } else {
                LocDetl  locdetl =  locDetlService.getOne(new LambdaQueryWrapper<LocDetl>()
                        .eq(LocDetl::getLocId, loc.getId())
                        .eq(LocDetl::getBatch, taskDetl.getBatch())
                        .eq(LocDetl::getMatId, taskDetl.getMatId()));
                locdetl.setWorkQty(0.0);
                locdetl.setAnfme(anfme);
                if (!locDetlService.updateById(locdetl)) {
                    throw new CoolException("库存明细更新失败!!");
                }
            }
        }
@@ -420,6 +417,11 @@
        }
    }
    /**
     * 将原有库存明细删除
     * 库存状态设置为空库状态
     * @param task
     */
    //拣料出库
    private void executeTask103(Task task) {
        Long hostId = task.getHostId();
@@ -429,7 +431,7 @@
        if (loc == null) {
            throw new CoolException("库位不存在");
        }
        if (loc.getLocStsId() != LocStsType.R.val()) {
        if (loc.getLocStsId() != LocStsType.S.val()) {
            throw new CoolException("库位状态不处于R.出库预约");
        }
        List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());