zjj
2025-04-30 a1dd07f6884d2bf2fc1431927a557c8f3cdff870
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -17,6 +17,7 @@
import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
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.*;
@@ -123,6 +124,8 @@
    private LocAreaRelaMapper locAreaRelaMapper;
    @Autowired
    private LocAreaMapper locAreaMapper;
    @Autowired
    private DeviceSiteMapper deviceSiteMapper;
    /**
     * @author Ryan
@@ -180,15 +183,16 @@
    }
    /**
     * @param params
     * @param loginUserId
     * @return
     * @author Ryan
     * @description 收货至收货区
     * @param  params
     * @return
     * @time 2025/3/10 15:41
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R receiptToWarehouse(Map<String, Object> params) {
    public R receiptToWarehouse(Map<String, Object> params, Long loginUserId) {
        if (Objects.isNull(params)) {
            throw new CoolException("参数不能为空!!");
        }
@@ -224,14 +228,14 @@
        }
        //TODO /**收货数量累加,1. 会出超收情况 2. 会有收货不足情况*/
        Double rcptedQty = asnOrder.getQty() + receiptQty;
        asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
        asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
        if (!asnOrderMapper.updateById(asnOrder)) {
            throw new CoolException("已收货数量修改失败!!");
        }
        List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
        for (Map<String, Object> rcpt : receipts1) {
            if (Objects.isNull(rcpt)) {continue;}
            if (null == rcpt || Objects.isNull(rcpt)) {continue;}
            ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class);
            Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
            if (Objects.isNull(matnr)) {
@@ -245,6 +249,7 @@
//            }
            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
                    .eq(AsnOrderItem::getAsnCode, asnCode)
                            .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
                    .eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
            if (Objects.isNull(orderItem)) {
                throw new CoolException("通知单明细不存在!!");
@@ -296,6 +301,8 @@
                    .setAnfme(dto.getReceiptQty())
                    .setSplrBatch(dto.getSplrBatch())
                    .setMatnrCode(matnr.getCode())
                    .setUpdateBy(loginUserId)
                    .setCreateBy(loginUserId)
                    .setMatnrId(matnr.getId())
                    .setMaktx(matnr.getName())
                    //库存单位为最小单位
@@ -355,7 +362,7 @@
     */
    @Override
    public List<AsnOrder> getAllAsnOrders() {
        List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
        List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type));
        return asnOrders;
    }
@@ -618,7 +625,7 @@
                .eq(AsnOrder::getId, OrderId)
                .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
        if (Objects.isNull(order)) {
            throw new CoolException("单据不存在!!");
            throw new CoolException("非平库单据不可执行人工上架!!");
        }
        Stock stock = new Stock();
//        if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
@@ -650,7 +657,9 @@
        itemList.forEach(asnOrderItem -> {
            LocItem item = new LocItem();
            BeanUtils.copyProperties(asnOrderItem, item);
            item.setId(loc.getId())
            item.setLocId(loc.getId())
                    .setId(null)
                    .setLocCode(loc.getCode())
                    .setOrderId(order.getId())
                    .setOrderItemId(asnOrderItem.getId())
                    .setWkType(Short.parseShort(order.getWkType()))
@@ -822,6 +831,71 @@
    }
    /**
     * @author Ryan
     * @description 获取入库组拖信息
     * @param barcode
     * @return
     */
    @Override
    public R getPakinInStock(String barcode) {
        WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
        if (Objects.isNull(waitPakin)) {
            throw new CoolException("组拖单据不存在!!");
        }
        List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
        if (pakinItems.isEmpty()) {
            return R.ok(new ArrayList<>());
        }
        return R.ok(pakinItems);
    }
    /**
     * @author Ryan
     * @description 获取库口站点信息
     * @return
     */
    @Override
    public R getDeviceSites() {
        List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>()
                        .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName)
                .eq(DeviceSite::getStatus, 1)
                .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName));
        return R.ok(sites);
    }
    /**
     * @author Ryan
     * @description 获取推荐库位
     * @return
     */
    @Override
    public R getRecommondLocs() {
        return R.ok(locService.list(new LambdaQueryWrapper<Loc>().last("limit 10")));
    }
    /**
     * @param map
     * @param loginUserId
     * @return
     * @author Ryan
     * @description 生成任务列表
     */
    @Override
    public R generateTask(Map<String, Object> map, Long loginUserId) {
        String barcode = map.get("barcode").toString();
        List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
        if (waitPakins.isEmpty()) {
            throw new CoolException("单据不存在 !!");
        }
        GenerateTaskParams taskParams = new GenerateTaskParams();
        taskParams.setWaitPakins(waitPakins)
                .setSiteId(Long.parseLong(map.get("site").toString()))
                .setLocCode(map.get("locCode").toString());
        return R.ok(taskService.generateTasks(taskParams, loginUserId));
    }
    /**
     * 获取ReceiptDetlsDtos
     */
    private R getAsnOrderItem(List<AsnOrderItem> items) {
@@ -855,7 +929,8 @@
            }
            //获取当前库存信息
            LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
                    .eq(LocItem::getOrderItemId, asnOrderItem.getId())
//                    .eq(LocItem::getOrderItemId, asnOrderItem.getId())
                            .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex())
                    .eq(LocItem::getBatch, asnOrderItem.getBatch())
                    .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId()));
            //SET 当前库存数量