zhou zhou
14 小时以前 cfe049492f81d2c650a2b17348593edbc5054498
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.manager.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
@@ -11,7 +12,10 @@
import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.mapper.LocItemMapper;
import com.vincent.rsf.server.manager.mapper.TaskMapper;
import com.vincent.rsf.server.manager.mapper.WaveMapper;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
@@ -22,6 +26,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -36,23 +41,26 @@
    @Autowired
    private LocService locService;
    @Autowired
    private TaskService taskService;
    private TaskMapper taskMapper;
    @Autowired
    private TaskItemService taskItemService;
    @Autowired
    private LocItemService locItemService;
    @Autowired
    private DeviceSiteService deviceSiteService;
    @Autowired
    @Lazy
    private WcsService wcsService;
    @Autowired
    private OutStockService outStockService;
    private AsnOrderMapper asnOrderMapper;
    @Autowired
    private WaveService waveService;
    private WaveMapper waveMapper;
    @Autowired
    private BasStationService basStationService;
    @Autowired
    private LocItemWorkingService locItemWorkingService;
    @Autowired
    private CheckDiffService checkDiffService;
    @Autowired
    private CheckDiffItemService checkDiffItemService;
    /**
@@ -117,7 +125,7 @@
            throw new CoolException("空容器出库!!其他类型无效,进入类型:"+map.getType());
        }
        if (!taskService.save(task)) {
        if (taskMapper.insert(task) <= 0) {
            throw new CoolException("任务创建失败!!");
        }
    }
@@ -150,10 +158,10 @@
        if (!Objects.isNull(map.getSourceId())) {
            if (map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
                order = new WkOrder();
                wave = waveService.getById(map.getSourceId());
                wave = waveMapper.selectById(map.getSourceId());
            } else {
                wave = new Wave();
                order = outStockService.getById(map.getSourceId());
                order = asnOrderMapper.selectById(map.getSourceId());
            }
        } else {
            wave = new Wave();
@@ -178,8 +186,7 @@
            }
            //增加对备货单的判断
            Integer taskStatus = resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)
                    ? TaskStsType.MISSION_INITIAL.id:TaskStsType.MISSION_INITIAL.id;
            Integer taskStatus = TaskStsType.MISSION_INITIAL.id;
            Task moveTask = new Task();
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
@@ -195,6 +202,7 @@
                    .setTaskStatus(taskStatus)
                    .setBarcode(loc.getBarcode())
                    .setTargSiteArea(map.getTargSiteAreaList())
                    .setTargSiteAreaNow(map.getTargSiteAreaNow())
                    .setMemo(map.getMemo());
            List<LocItem> locItems = this.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, key));
@@ -220,7 +228,7 @@
                    }
                    task.setTaskType(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type).setWarehType(deviceSite.getDevice());
                } else {
                    if (resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_UP.val)){
                    if (resouce.equals(TaskResouceType.TASK_RESOUCE_STOCK_NOT_OUT.val)){
                        //全板出库
                        DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                                .eq(DeviceSite::getSite, siteNo).eq(DeviceSite::getType, TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)
@@ -253,7 +261,7 @@
                task.setTaskType(TaskType.TASK_TYPE_CHECK_OUT.type).setWarehType(deviceSite.getDevice());
            }
            if (!taskService.save(task)) {
            if (taskMapper.insert(task) <= 0) {
                throw new CoolException("任务创建失败!!");
            }
@@ -281,11 +289,11 @@
            if (!Objects.isNull(moveTask.getId())) {
                moveTask.setParentId(task.getId()).setSort(moveTask.getSort() + 1);
                if (!taskService.saveOrUpdate(moveTask)) {
                if ((Objects.isNull(moveTask.getId()) ? taskMapper.insert(moveTask) : taskMapper.updateById(moveTask)) <= 0) {
                    throw new CoolException("任务信息修改失败!!");
                }
                task.setParentId(moveTask.getId());
                if (!taskService.updateById(task)) {
                if (taskMapper.updateById(task) <= 0) {
                    throw new CoolException("主任务关联失败!!");
                }
            }
@@ -322,7 +330,7 @@
                taskItems.add(taskItem);
                Double qty = Math.round((item.getWorkQty() + item.getOutQty()) * 10000) / 10000.0;
                LocItem locItem = locItemService.getById(item.getId());
                LocItem locItem = this.getById(item.getId());
                if (Objects.isNull(locItem)) {
                    throw new CoolException("库存信息不存在!");
                }
@@ -339,7 +347,7 @@
                }
                item.setUpdateBy(loginUserId).setUpdateTime(new Date());
                if (!locItemService.updateById(item)) {
                if (!this.updateById(item)) {
                    throw new CoolException("库存信息修改失败!!");
                }
@@ -365,6 +373,63 @@
            if (!taskItemService.saveBatch(taskItems)) {
                throw new CoolException("任务明细生成失败!!");
            }
            // 无单盘点:提取出库时即生成盘点差异单,便于 PDA 按差异单校验
            if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK)) {
                Date now = new Date();
                double sumAnfme = taskItems.stream().mapToDouble(ti -> ti.getAnfme() != null ? ti.getAnfme() : 0).sum();
                CheckDiff checkDiff = new CheckDiff();
                checkDiff.setOrderCode(task.getTaskCode())
                        .setOrderId(null)
                        .setCheckType(0)
                        .setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_INIT.val)
                        .setAnfme(sumAnfme)
                        .setCheckQty(0D)
                        .setStatus(1)
                        .setDeleted(0)
                        .setTenantId(task.getTenantId())
                        .setCreateBy(loginUserId)
                        .setCreateTime(now)
                        .setUpdateBy(loginUserId)
                        .setUpdateTime(now);
                if (loc.getAreaId() != null) {
                    checkDiff.setAreaId(loc.getAreaId()).setAreaName(loc.getAreaId$());
                }
                if (!checkDiffService.save(checkDiff)) {
                    throw new CoolException("无单盘点差异单创建失败!!");
                }
                List<CheckDiffItem> diffItems = new ArrayList<>();
                for (TaskItem ti : taskItems) {
                    CheckDiffItem diffItem = new CheckDiffItem();
                    diffItem.setCheckId(checkDiff.getId())
                            .setOrderCode(task.getTaskCode())
                            .setTaskId(task.getId())
                            .setTaskItemId(ti.getId())
                            .setBarcode(task.getBarcode())
                            .setAnfme(ti.getAnfme() != null ? ti.getAnfme() : 0D)
                            .setCheckQty(ti.getAnfme() != null ? ti.getAnfme() : 0D)
                            .setMatnrCode(ti.getMatnrCode())
                            .setMaktx(ti.getMaktx())
                            .setBatch(ti.getBatch())
                            .setSpec(ti.getSpec())
                            .setModel(ti.getModel())
                            .setExceStatus(CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_INIT.val)
                            .setStatus(1)
                            .setDeleted(0)
                            .setTenantId(task.getTenantId())
                            .setCreateBy(loginUserId)
                            .setCreateTime(now)
                            .setUpdateBy(loginUserId)
                            .setUpdateTime(now);
                    diffItems.add(diffItem);
                }
                if (!checkDiffItemService.saveBatch(diffItems)) {
                    throw new CoolException("无单盘点差异明细创建失败!!");
                }
                taskItemService.update(new LambdaUpdateWrapper<TaskItem>()
                        .set(TaskItem::getSourceCode, task.getTaskCode())
                        .eq(TaskItem::getTaskId, task.getId()));
            }
        });
    }
@@ -429,6 +494,7 @@
        }
        targetLoc.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
        targetLoc.setBarcode(orgLoc.getBarcode());
        if (!locService.updateById(targetLoc)) {
            throw new CoolException("目标库位预约失败!!");
@@ -447,11 +513,11 @@
                .setBarcode(orgLoc.getBarcode())
                .setMemo(map.getMemo());
        if (!taskService.save(task)) {
        if (taskMapper.insert(task) <= 0) {
            throw new CoolException("新建移库任务失败!!");
        }
        List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, orgLoc.getId()));
        List<LocItem> locItems = this.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, orgLoc.getId()));
        if (!locItems.isEmpty()) {
            List<TaskItem> taskItems = new ArrayList<>();
            for (LocItem item : locItems) {
@@ -491,6 +557,6 @@
                .eq(StringUtils.isNotBlank(matnr.getLocCode()), LocItem::getLocCode, matnr.getLocCode())
//                .eq(StringUtils.isNotBlank(matnr.getChannel()), LocItem::getChannel, matnr.getChannel())
                .in(!matnr.getMatnrCode().isEmpty(), LocItem::getMatnrCode, matnr.getMatnrCode());
        return  this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, matnr.getChannel(), wrapper);
        return this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, matnr.getChannel(), wrapper);
    }
}