cy
2023-10-27 1c50fb8dedaf13cb41f292a1a62b62055bc67f86
consum-base/src/main/java/com/consum/base/service/LWhGoodsService.java
@@ -1,10 +1,14 @@
package com.consum.base.service;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @ClassName LWhGoodsService
@@ -35,7 +39,42 @@
            paramts.put("warehouseId", warehouseId);
        }
        if (baseGoodsModelsId != null) {
            sql.append(" and BASE_GOODS_TEMPLATE_ID=:businessId");
            sql.append(" and BASE_GOODS_MODELS_ID=:baseGoodsModelsId");
            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
        }
        if (states != null) {
            sql.append(" and STATES=:states");
            paramts.put("states", states);
        }
        if (buyType != null) {
            sql.append(" and BUY_TYPE=:buyType");
            paramts.put("buyType", buyType);
        }
        return queryForInt(sql.toString(), paramts);
    }
    /**
     * 出库时候,先入库的先出库,同时入库的,按价格高的先出库
     *
     * @param warehouseId       所属仓库仓库编号
     * @param baseGoodsModelsId 规格型号编号
     * @param states            状态(0=在途调拨;1=入库未分发;2=已下发;3=报废)
     * @param buyType           采购方式(1:集采;2=自采)
     * @param goodsModelNum 取出的数量
     * @return
     */
    private static String QUERY_OUT_GOODS_ID = "SELECT*FROM L_WH_GOODS WHERE 1=1";
    public List<Map<String, Object>> queryOutGoods(Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, Integer goodsModelNum) {
        StringBuilder sql = new StringBuilder(QUERY_OUT_GOODS_ID);
        Map<String, Object> paramts = new HashMap<>();
        if (warehouseId != null) {
            sql.append(" and WAREHOUSE_ID=:warehouseId");
            paramts.put("warehouseId", warehouseId);
        }
        if (baseGoodsModelsId != null) {
            sql.append(" and BASE_GOODS_TEMPLATE_ID=:baseGoodsModelsId");
            paramts.put("baseGoodsModelsId", baseGoodsModelsId);
        }
        if (states != null) {
@@ -46,6 +85,57 @@
            sql.append(" and BUY_TYPE=:buyType");
            paramts.put("buyType", buyType);
        }
        return queryForInt(sql.toString(), paramts);
        return select(sql.append(" limit").append(goodsModelNum).toString(), paramts);
    }
    /**
     * 出库时候,先入库的先出库,同时入库的,按价格高的先出库
     *
     * @param warehouseId       所属仓库仓库编号
     * @param baseGoodsModelsId 规格型号编号
     * @param states            状态(0=在途调拨;1=入库未分发;2=已下发;3=报废)
     * @param buyType           采购方式(1:集采;2=自采)
     * @param goodsModelNum     取出的数量
     * @return
     */
    public List<Long> queryOutGoodsId(Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, Integer goodsModelNum) {
        List<Map<String, Object>> outGoods = queryOutGoods(warehouseId, baseGoodsModelsId, states, buyType, goodsModelNum);
        if (CollectionUtils.isEmpty(outGoods)) {
            return null;
        }
        List<Long> whGoodsIds = outGoods.stream().map(map -> (Long) map.get("id")).collect(Collectors.toList());
        return whGoodsIds;
    }
    /**
     * 设置物品状态为调拨中
     *
     * @param whGoods
     * @param toWarehouseId
     * @param toWarehouseName
     * @return
     */
    private static String MOD_GOODS_TRANSFERING_PREFIX = "update L_WH_GOODS set";
    public int modGoodsTransfering(List<Long> whGoods, Long toWarehouseId, String toWarehouseName, Short states) {
        StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX);
        ArrayList<Object> params = new ArrayList<>();
        if (toWarehouseId != null) {
            sql.append(", WAREHOUSE_ID=?");
            params.add(toWarehouseId);
        }
        if (toWarehouseName != null) {
            sql.append(", WAREHOUSE_NAME=?");
            params.add(toWarehouseName);
        }
        if (states != null) {
            sql.append(", STATES=?");
            params.add(states);
        }
        sql.deleteCharAt(22);
        sql.append(" where id in(?)");
        params.add(whGoods);
        return update(sql.toString(), params.toArray());
    }
}