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 * @Author cy * @Date 2023/10/24 * @Description * @Version 1.0 **/ @Service public class LWhGoodsService extends BaseServiceImpl { /** * @param warehouseId 所属仓库仓库编号 * @param baseGoodsModelsId 规格型号编号 * @param states (0=在途调拨;1=入库未分发;2=已下发;3=报废) * @param buyType 采购方式(1:集采;2=自采) * @return 查询某个型号在仓库中的数量 */ private static String query_Goods_Model_Num = "SELECT COUNT(1) from L_WH_GOODS where 1=1"; public int queryGoodsModelNum(Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType) { StringBuilder sql = new StringBuilder(query_Goods_Model_Num); Map paramts = new HashMap<>(); if (warehouseId != null) { sql.append(" and WAREHOUSE_ID=:warehouseId"); paramts.put("warehouseId", warehouseId); } if (baseGoodsModelsId != null) { 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> queryOutGoods(Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, Integer goodsModelNum) { StringBuilder sql = new StringBuilder(QUERY_OUT_GOODS_ID); Map 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) { sql.append(" and STATES=:STATES"); paramts.put("states", states); } if (buyType != null) { sql.append(" and BUY_TYPE=:buyType"); paramts.put("buyType", buyType); } 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 queryOutGoodsId(Long warehouseId, Long baseGoodsModelsId, Short states, Short buyType, Integer goodsModelNum) { List> outGoods = queryOutGoods(warehouseId, baseGoodsModelsId, states, buyType, goodsModelNum); if (CollectionUtils.isEmpty(outGoods)) { return null; } List 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 whGoods, Long toWarehouseId, String toWarehouseName, Short states) { StringBuilder sql = new StringBuilder(MOD_GOODS_TRANSFERING_PREFIX); ArrayList 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()); } }