verou
2025-03-11 89b19f453e03402aa2c8a588e5be1f491c007141
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -4,15 +4,19 @@
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.OtherReceiptParams;
import com.vincent.rsf.server.api.controller.params.ReceiptParams;
import com.vincent.rsf.server.api.entity.dto.ReceiptDetlsDto;
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.common.config.ConfigProperties;
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.WarehouseAreasItemService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.CodeRes;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.controller.result.LoginResult;
@@ -22,6 +26,7 @@
import com.vincent.rsf.server.system.mapper.TenantMapper;
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.tika.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -52,11 +57,14 @@
    private UserMapper userService;
    @Autowired
    private UserLoginService userLoginService;
    @Autowired
    private WarehouseAreasItemService warehouseAreasItemService;
    @Autowired
    private WarehouseAreasService warehouseAreasService;
    @Resource
    private AsnOrderItemMapper asnOrderItemMapper;
    @Resource
    private AsnOrderMapper asnOrderMapper;
    @Resource
    private MatnrMapper matnrMapper;
    @Resource
@@ -114,47 +122,12 @@
        if (StringUtils.isEmpty(barcode)) {
            return R.error("标签码不能为空!!");
        }
        ReceiptDetlsDto detlsDto = new ReceiptDetlsDto();
        AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getBarcode, barcode));
        if (Objects.isNull(asnOrderItem)) {
            throw new CoolException("单据明细不存在!!");
        }
        detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                .setMatnk(asnOrderItem.getMatnk())
                .setBarcode(asnOrderItem.getBarcode())
                .setPoCode(asnOrderItem.getPoCode())
                .setPurQty(asnOrderItem.getAnfme())
                .setSplrBatch(asnOrderItem.getSplrBatch());
        Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId());
        if (Objects.isNull(matnr)) {
            throw new CoolException("数据错误:当前物料不存在!!");
        }
        //SET 物料最大存放数量
        detlsDto.setMaxQty(matnr.getMaxQty())
                .setMatnrId(matnr.getId())
                .setStockUnit(matnr.getStockUnit());
        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
                .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId()));
        //set 质检结果
        detlsDto.setInspect(inspect.getStatus$());
        //获取当前库存信息
        StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>()
                .eq(StockItem::getAsnItemId, asnOrderItem.getId())
                .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId()));
        //SET 当前库存数量
        if (Objects.isNull(stockItem)) {
            detlsDto.setStockQty(0.0);
        } else {
            detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty());
        }
        //获取采购单明细信息
        PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId()));
        //SET 平台行号
        detlsDto.setPlatformId(purchaseItem.getPlatItemId());
        return R.ok(detlsDto);
        return getAsnOrderItem(asnOrderItem);
    }
    /**
@@ -186,19 +159,18 @@
                    .setAreaName(areasItem.getAreaName())
                    .setAreaId(areasItem.getAreaId())
                    .setStockUnit(dto.getStockUnit())
                    //TODO 编码规则生成批次 (物料号+日期)
                    .setBatch(null)
                    .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto))
                    .setAnfme(dto.getReceiptQty())
                    .setSplrBtch(dto.getSplrBatch())
                    .setMatnrCode(matnr.getCode())
                    .setMatnrId(matnr.getId())
                    .setMatnrName(matnr.getName())
                    //TODO 入库单位换算
                    //库存单位为最小单位
                    .setUnit(dto.getStockUnit())
                    .setStockUnit(dto.getStockUnit())
                    .setWeight(matnr.getWeight())
                    .setShipperId(matnr.getShipperId());
                    //TODO 供应商标识未设置
                    //TODO 供应商标识未设置,标识由PO单供应商编码转换
            allOrders.add(item);
        });
@@ -209,4 +181,102 @@
        return R.ok("操作成功");
    }
    /**
     * @author Ryan
     * @description 其它收货
     * @param params
     * @return
     */
    @Override
    public R otherReceipt(OtherReceiptParams params) {
        if (Objects.isNull(params.getAsnCode())) {
            throw new CoolException("通知单不能为空!!");
        }
        if (Objects.isNull(params.getBarcode())) {
            throw new CoolException("物料编码不能为空!!");
        }
        AsnOrderItem asnOrderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
                .eq(AsnOrderItem::getAsnCode, params.getAsnCode())
                .eq(AsnOrderItem::getBarcode, params.getBarcode()));
        if (Objects.isNull(asnOrderItem)) {
            throw new CoolException("单据明细不存在!!");
        }
       return getAsnOrderItem(asnOrderItem);
    }
    /**
     * @author Ryan
     * @description 获取所有通知单
     * @return
     */
    @Override
    public List<AsnOrder> getAllAsnOrders() {
        List<AsnOrder> asnOrders = asnOrderMapper.selectList(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
        return asnOrders;
    }
    /**
     * @author Ryan
     * @description 获取收货区
     * @param
     * @return
     * @time 2025/3/11 10:12
     */
    @Override
    public R getReceiptAreas() {
        return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
    }
    /**
     * 获取ReceiptDetlsDto
     */
    private R getAsnOrderItem(AsnOrderItem asnOrderItem) {
        ReceiptDetlsDto detlsDto = new ReceiptDetlsDto();
        detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                .setMatnk(asnOrderItem.getMatnk())
                .setBarcode(asnOrderItem.getBarcode())
                .setPoCode(asnOrderItem.getPoCode())
                .setPurQty(asnOrderItem.getAnfme())
                .setSplrBatch(asnOrderItem.getSplrBatch());
        Matnr matnr = matnrMapper.selectById(asnOrderItem.getMatnrId());
        if (Objects.isNull(matnr)) {
            throw new CoolException("数据错误:当前物料不存在!!");
        }
        //SET 物料最大存放数量
        detlsDto.setMaxQty(matnr.getMaxQty())
                .setMatnrId(matnr.getId())
                .setStockUnit(matnr.getStockUnit());
        QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
                .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId()));
        if (!Objects.isNull(inspect)) {
            //set 质检结果
            detlsDto.setInspect(inspect.getStatus$());
        }
        //获取当前库存信息
        StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>()
                .eq(StockItem::getAsnItemId, asnOrderItem.getId())
                .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId()));
        //SET 当前库存数量
        if (Objects.isNull(stockItem)) {
            detlsDto.setStockQty(0.0);
        } else {
            detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty());
        }
        //获取采购单明细信息
        PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId()));
        //SET 平台行号
        detlsDto.setPlatformId(purchaseItem.getPlatItemId());
        return R.ok(detlsDto);
    }
}