skyouc
2025-04-14 af455bd20edfd02cb3e8c7710e65aee798720dca
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -16,12 +16,13 @@
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.common.utils.JSONUtil;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.enums.PakinIOStatus;
import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -31,11 +32,9 @@
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.mapper.FieldsMapper;
import com.vincent.rsf.server.system.mapper.TenantMapper;
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.FieldsItemService;
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -46,7 +45,6 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -211,6 +209,10 @@
        Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
        if (Objects.isNull(receiptQty) || receiptQty.compareTo(0.00) <= 0) {
            throw new CoolException("收货数量不能小于或等于零!!");
        }
        String asnCode = receipts.stream().findFirst().get().getAsnCode();
        AsnOrder asnOrder = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
@@ -246,7 +248,7 @@
                throw new CoolException("通知单明细不存在!!");
            }
            if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
                throw new CoolException("收货数量不能为零!!");
                throw new CoolException("物料:" + dto.getMaktx() +  "收货数量不能为零!!");
            }
            Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
            orderItem.setQty(itemRcptQty)
@@ -289,7 +291,7 @@
                    .setWeight(dto.getWeigth())
                    .setStockUnit(dto.getStockUnit())
                    .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
                    .setAnfme(itemRcptQty)
                    .setAnfme(dto.getReceiptQty())
                    .setSplrBatch(dto.getSplrBatch())
                    .setMatnrCode(matnr.getCode())
                    .setMatnrId(matnr.getId())
@@ -364,7 +366,8 @@
     */
    @Override
    public R getReceiptAreas() {
        return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
        List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type));
        return R.ok(areas);
    }
    /**
@@ -397,15 +400,16 @@
    }
    /**
     * @param
     * @param userId
     * @return
     * @author Ryan
     * @description PDA组拖
     * @param
     * @return
     * @time 2025/3/29 14:26
     */
    @Override
    public WaitPakin mergeItems(WaitPakinParam waitPakin) {
        return waitPakinService.mergeItems(waitPakin);
    public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) {
        return waitPakinService.mergeItems(waitPakin, userId);
    }
    /**
@@ -495,36 +499,39 @@
        if (Objects.isNull(params.getIsptCode())) {
            throw new CoolException("质检单不能为空");
        }
        if (Objects.isNull(params.getMatnrCode())) {
            throw new CoolException("物料编码不能为空!");
        }
        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode()));
        List<Short> asList = Arrays.asList(QlyIsptStatus.QLY_ISPT_STAS_DONE.val, QlyIsptStatus.QLY_ISPT_STAS_CLOSE.val);
        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
                        .notIn(QlyInspect::getIsptStatus, asList)
                .eq(QlyInspect::getCode, params.getIsptCode()));
        if (Objects.isNull(inspect)) {
            throw new CoolException("质检单据不存在!!");
        }
        QlyIsptItem isptItem = qlyIsptItemService.getOne(new LambdaQueryWrapper<QlyIsptItem>()
                .eq(QlyIsptItem::getMatnrCode, params.getMatnrCode())
        List<QlyIsptItem> isptItems = qlyIsptItemService.list(new LambdaQueryWrapper<QlyIsptItem>()
                .eq(StringUtils.isNotBlank(params.getMatnrCode()), QlyIsptItem::getMatnrCode, StringUtils.isNotBlank(params.getMatnrCode()) ? params.getMatnrCode() : null)
                .eq(QlyIsptItem::getIspectId, inspect.getId()));
        if (Objects.isNull(isptItem)) {
        if (Objects.isNull(isptItems)) {
            throw new CoolException("质检单明细不存在!!");
        }
        CheckObjDto objDto = new CheckObjDto();
        objDto.setIsptCode(inspect.getCode())
                .setAsnCode(inspect.getAsnCode())
                .setId(isptItem.getId())
                .setMatnrCode(isptItem.getMatnrCode())
                .setMaktx(isptItem.getMaktx())
                .setDisQty(isptItem.getDisQty())
                .setDlyQty(isptItem.getDlyQty())
                .setRcptQty(isptItem.getRcptQty())
                .setIsptResult(isptItem.getIsptResult())
                .setSplrBatch(isptItem.getSplrBatch())
                .setSplrName(isptItem.getSplrName())
                .setPicPath(isptItem.getPicPath())
                .setMemo(isptItem.getMemo())
                .setSafeQty(isptItem.getSafeQty());
        return R.ok(objDto);
        List<CheckObjDto> dtos = new ArrayList<>();
        isptItems.forEach(isptItem -> {
            CheckObjDto objDto = new CheckObjDto();
            objDto.setIsptCode(inspect.getCode())
                    .setAsnCode(inspect.getAsnCode())
                    .setId(isptItem.getId())
                    .setMatnrCode(isptItem.getMatnrCode())
                    .setMaktx(isptItem.getMaktx())
                    .setDisQty(isptItem.getDisQty())
                    .setDlyQty(isptItem.getDlyQty())
                    .setRcptQty(isptItem.getRcptQty())
                    .setIsptResult(isptItem.getIsptResult())
                    .setSplrBatch(isptItem.getSplrBatch())
                    .setSplrName(isptItem.getSplrName())
                    .setPicPath(isptItem.getPicPath())
                    .setMemo(isptItem.getMemo())
                    .setSafeQty(isptItem.getSafeQty());
            dtos.add(objDto);
        });
        return R.ok(dtos);
    }
    /**
@@ -533,14 +540,12 @@
     * @return
     */
    @Override
    public R checkUpdate(QlyIsptItem params) {
        if (Objects.isNull(params.getId())) {
    public R checkUpdate(List<QlyIsptItem> params) {
        if (Objects.isNull(params) || params.isEmpty()) {
            throw new CoolException("参数不能为空!!");
        }
        IsptItemsParams itemsParams = new IsptItemsParams();
        List<QlyIsptItem> items = new ArrayList<>();
        items.add(params);
        itemsParams.setIsptItem(items).setType("0");
        itemsParams.setIsptItem(params).setType("0");
        if (qlyIsptItemService.batchUpdate(itemsParams)) {
            return R.ok();
        } else {
@@ -730,6 +735,68 @@
    }
    /**
     * @author Ryan
     * @description 通过容器获取组拖物料
     * @param
     * @return
     * @time 2025/4/9 16:57
     */
    @Override
    public R getItemByContainer(Map<String, Object> params) {
        //获取组拖未生成任务的组拖档
        List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
        Short flagDefect = 0;
        if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
            flagDefect = 1;
        }
        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                .eq(WaitPakin::getBarcode, params.get("barcode").toString())
                        .eq(WaitPakin::getFlagDefect, flagDefect)
                .in(WaitPakin::getIoStatus, asList));
        if (Objects.isNull(waitPakin)) {
            return R.ok(new ArrayList<>());
        }
        List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
                .eq(WaitPakinItem::getPakinId, waitPakin.getId()));
        if (pakinItems.isEmpty()) {
            return R.ok(new ArrayList<>());
        }
        if (!Objects.isNull(params.get("type")) && params.get("type").equals("defective")) {
            return R.ok(pakinItems);
        } else {
            List<String> list = pakinItems.stream().map(WaitPakinItem::getTrackCode).collect(Collectors.toList());
            LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
                    .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx")
                    .lambda()
                    .in(WarehouseAreasItem::getTrackCode, list)
                    .groupBy(WarehouseAreasItem::getSplrBatch,
                            WarehouseAreasItem::getTrackCode);
            List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper);
            for (int i = 0; i < warehouseAreasItems.size(); i++) {
                for (WaitPakinItem pakinItem : pakinItems) {
                    if (warehouseAreasItems.get(i).getTrackCode().equals(pakinItem.getTrackCode())) {
                        warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme());
                    }
                }
            }
            return R.ok(warehouseAreasItems);
        }
    }
    /**
     * @author Ryan
     * @description 不良标签
     * @param
     * @return
     * @time 2025/4/12 08:12
     */
    @Override
    public R defectProducts(String trackCode) {
        AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, trackCode));
        return R.ok(orderItem);
    }
    /**
     * 获取ReceiptDetlsDtos
     */
    private R getAsnOrderItem(List<AsnOrderItem> items) {