恒合仓库 - 采购单管理模块

news2025/1/10 1:34:51

采购单管理模块

文章目录

  • 采购单管理模块
  • 一、添加采购单(核心)
    • 1.1 采购流程
    • 1.2 采购单实体类
    • 1.3 添加采购单
      • 1.3.1 Mapper
      • 1.3.2 Service
      • 1.3.3 Controller
      • 1.3.4 效果图
  • 二、采购单管理模块
    • 2.1 仓库数据回显
      • 2.1.1 Mapper
      • 2.1.2 Service
      • 2.1.3 Controller
      • 2.1.4 效果图
    • 2.2 采购单列表
      • 2.1.1 Mapper
      • 2.1.2 Service
      • 2.1.3 Controller
      • 2.1.4 效果图
    • 2.3 删除采购单
      • 2.3.1 Mapper
      • 2.3.2 Service
      • 2.3.3 Controller
    • 2.4 修改采购单
      • 2.4.1 Mapper
      • 2.4.2 Service
      • 2.4.3 Controller
    • 2.5 生成入库单
      • 2.5.1 入库单表实体类
      • 2.5.2 Mapper
      • 2.5.3 Service
      • 2.5.4 Controller
      • 2.5.5 效果图
  • 三、入库单管理
    • 3.1 分页查询入库单
      • 3.1.1 Mapper
      • 3.1.2 Service
      • 3.1.3 Controller
      • 3.1.4 效果图
    • 3.2 确认入库单
      • 3.1.1 Mapper
      • 3.1.2 Service
      • 3.1.3 Controller
  • 四、出库单管理
    • 4.1 确认出库单
      • 4.1.1 Mapper
      • 4.1.2 Service
      • 4.1.3 Controller

一、添加采购单(核心)

1.1 采购流程

类似进货

采购流程

  • 在商品列表针对具体的商品添加采购单

    image-20230819193051386

    向buy_list表中添加一条记录。添加的采购单表示预买的商品(还没有买,is_in字段的值是0)

    image-20230819185218636

  • 当商品采购到之后进行入库

    在采购单列表做入库操作,向in_store表添加记录(状态是0未入库),同时修改采购单表buy_list表由0改为1入库(这个入库是表示准备入库)

image-20230819191554350

​ 下面是in_store表

image-20230819191805399

  • 商品真正的入库

    在入库单列表做确认入库操作

    image-20230819191905348

    将入库单表in_store表的入库单状态由0改为1入库

1.2 采购单实体类

/**
 * 采购单表buy_list表的实体类:
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Purchase {

    private Integer buyId;//采购单id

    private Integer productId;//采购单采购的商品id

    private Integer storeId;//采购单采购的商品所在仓库id

    private Integer buyNum;//预计采购的商品数量

    private Integer factBuyNum;//实际采购的商品数量

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date buyTime;//采购时间

    private Integer supplyId;//采购单采购的商品的供应商id

    private Integer placeId;//采购单采购的商品的产地id

    private String buyUser;//采购人

    private String phone;//采购人联系电话

    private String isIn;//是否生成入库单,1.是,0.否

    //---------------追加属性---------------------------

    private String productName;//商品名称

    private String storeName;//仓库名称

    private String startTime;//搜索起始时间

    private String endTime;//搜索结束时间
}

1.3 添加采购单

image-20230819193441082

采购单数据库表buy_list如下所示

image-20230819193636735

image-20230819194050277

1.3.1 Mapper

@Mapper
public interface PurchaseMapper {
//   添加采购单
    public int insertPurchase(Purchase purchase);
    
}
<insert id="insertPurchase">
    insert into buy_list
    values (null, #{productId}, #{storeId}, #{buyNum}, null, now(),
            #{supplyId}, #{placeId}, #{buyUser}, #{phone}, 0)
</insert>

1.3.2 Service

@Service
public class PurchaseServiceImpl implements PurchaseService {

    @Autowired
    private PurchaseMapper purchaseMapper;

    @Override
    public Result savePurchase(Purchase purchase) {
//      初始化时,实际采购数量要和预计采购数量一致
        purchase.setFactBuyNum(purchase.getBuyNum());
        int success = purchaseMapper.insertPurchase(purchase);

        return success>0 ? Result.ok("添加采购单成功") : Result.err(501,"添加采购单失败");
    }

}

1.3.3 Controller

@RestController
@RequestMapping("/purchase")
public class PurchaseController {

    @Autowired
    private PurchaseService purchaseService;

    @RequestMapping("/purchase-add")
    public Result addPurchase(@RequestBody Purchase purchase){

        return purchaseService.savePurchase(purchase);
    }

}

1.3.4 效果图

image-20230819201233500

image-20230819201346600

二、采购单管理模块

1.采购列表

2.删除采购单

3.修改采购单

4.生成入库单

image-20230822192440479

2.1 仓库数据回显

2.1.1 Mapper

//  查询所有仓库的方法
    public List<Store> findAllStore();
<mapper namespace="com.pn.mapper.StoreMapper">

    <select id="findAllStore" resultType="com.pn.entity.Store">
        select *
        from store
    </select>

</mapper>

2.1.2 Service

@CacheConfig(cacheNames = "com.pn.service.impl.StoreServiceImpl")
@Service
public class StoreServiceImpl implements StoreService {
    @Autowired
    private StoreMapper storeMapper;


    @Cacheable(key = "'all:store'")
    @Override
    public List<Store> queryAllStore() {
        return storeMapper.findAllStore();
    }
}

2.1.3 Controller

//  仓库数据回显 - 查询所有仓库
    @RequestMapping("/store-list")
    public Result storeList(){
        return Result.ok(storeService.queryAllStore());
    }

2.1.4 效果图

image-20230822193510247

2.2 采购单列表

我们需要将下面的数据显示出来。

查询所有采购单并分页或者是根据仓库id、起止时间、商品名称、采购员、是否入库查询采购单并分页

image-20230822213529276

2.1.1 Mapper

//  查询采购单行数的方法
    public Integer findPurchaseCount(Purchase purchase);

//  分页查询采购单的方法
    public List<Purchase> findPurchasePage(@Param("page") Page page,@Param("purchase") Purchase purchase);
<select id="findPurchaseCount" resultType="java.lang.Integer">
    select count(*) from buy_list t1, product t2, store t3
    where t1.product_id = t2.product_id and t1.store_id = t3.store_id
    <if test="storeId != null">
        and t1.store_id = #{storeId}
    </if>
    <if test="productName != null and productName != ''">
        and t2.product_name like concat('%', #{productName}, '%')
    </if>
    <if test="buyUser != null and buyUser != ''">
        and t1.buy_user like concat('%', #{buyUser}, '%')
    </if>
    <if test="isIn != null and isIn != ''">
        and t1.is_in = #{isIn}
    </if>
    <if test="startTime != null and startTime != ''">
        and t1.buy_time &gt;= #{startTime}
    </if>
    <if test="endTime != null and endTime != ''">
        and t1.buy_time &lt;= #{endTime}
    </if>
</select>

<select id="findPurchasePage" resultType="com.pn.entity.Purchase">
    select t1.*, t2.product_name, t3.store_name
    from buy_list t1, product t2, store t3
    where t1.product_id = t2.product_id and t1.store_id = t3.store_id
    <if test="purchase.storeId != null">
        and t1.store_id = #{purchase.storeId}
    </if>
    <if test="purchase.productName != null and purchase.productName != ''">
        and t2.product_name like concat('%', #{purchase.productName}, '%')
    </if>
    <if test="purchase.buyUser != null and purchase.buyUser != ''">
        and t1.buy_user like concat('%', #{purchase.buyUser}, '%')
    </if>
    <if test="purchase.isIn != null and purchase.isIn != ''">
        and t1.is_in = #{purchase.isIn}
    </if>
    <if test="purchase.startTime != null and purchase.startTime != ''">
        and t1.buy_time &gt;= #{purchase.startTime}
    </if>
    <if test="purchase.endTime != null and purchase.endTime != ''">
        and t1.buy_time &lt;= #{purchase.endTime}
    </if>
    order by t1.buy_time desc
    limit #{page.limitIndex}, #{page.pageSize}
</select>

2.1.2 Service

    @Override
    public Page queryPurchasePage(Page page, Purchase purchase) {

//      查询采购单行数
        Integer count = purchaseMapper.findPurchaseCount(purchase);

//      分页查询采购单
        List<Purchase> purchasePage = purchaseMapper.findPurchasePage(page, purchase);

//      组装分页信息
        page.setTotalNum(count);
        page.setResultList(purchasePage);
        return page;
    }

2.1.3 Controller

//分页查询采购单的url
@RequestMapping("/purchase-page-list")
public Result purchaseListPage(Page page, Purchase purchase) {
    return Result.ok(purchaseService.queryPurchasePage(page,purchase));
}

2.1.4 效果图

image-20230822224905377

2.3 删除采购单

已经入库的采购单不能被删除

2.3.1 Mapper

//  根据id删除采购单的方法
    public int removerPurchaseById(@Param("buyId") Integer buyId);
<delete id="removerPurchaseById">
   delete from buy_list where buy_id =#{buyId}
</delete>

2.3.2 Service

    @Override
    public Result deletePurchaseById(Integer buyId) {
        int success = purchaseMapper.removerPurchaseById(buyId);
        return success>0 ? Result.ok("删除采购单成功") : Result.err(501,"删除采购单失败");
    }

2.3.3 Controller

//  删除采购单
    @RequestMapping("/purchase-delete/{buyId}")
    public Result deletePurchase(@PathVariable Integer buyId){
        return Result.ok(purchaseService.deletePurchaseById(buyId));
    }

2.4 修改采购单

只能修改采购单的“预计采购数量”和“实际采购数量”

image-20230829211605364

2.4.1 Mapper

//  根据id修改预计采购数量和实际采购数量的方法
    public int setNumberById(Purchase purchase);
<update id="setNumberById">
    update buy_list
    set buy_num = #{buyNum} ,fact_buy_num = #{factBuyNum}
    where buy_id = #{buyId}
</update>

2.4.2 Service

@Override
public Result updatePurchaseById(Purchase purchase) {
    int success = purchaseMapper.setNumberById(purchase);
    return success>0 ? Result.ok("删除采购单成功") : Result.err(501,"删除采购单失败");
}

2.4.3 Controller

//  修改采购单的业务方法
    @RequestMapping("/purchase-update")
    public Result updatePurchase(@RequestBody Purchase purchase){
        return Result.ok(purchaseService.updatePurchaseById(purchase));
    }

2.5 生成入库单

image-20230829220825978

当我们商品采购到后,我们要进行入库操作

image-20230829220013380

2.5.1 入库单表实体类

/**
 * 入库单表in_store表的实体类:
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class InStore {

    private Integer insId;//入库单id

    private Integer storeId;//仓库id

    private Integer productId;//商品id

    private Integer inNum;//入库数量

    private Integer createBy;//创建入库单的用户id

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;//创建时间

    private Integer isIn;//是否入库,1.是,0.否

    //-----------------追加的属性--------------------

    private String productName;//商品名称

    private String startTime;//起始时间

    private String endTime;//结束时间

    private String storeName;//仓库名称

    private String userCode;//创建入库单的用户的名称

    private BigDecimal inPrice;//商品入库价格
}

2.5.2 Mapper

//  根据id修改采购单状态为已入库 (采购表buy_list)
    public int setIsInById(Integer buyId);
<update id="setIsInById">
    update buy_list
    set is_in =1
    where buy_id = #{buyId}
</update>
//添加入库单的方法
public int insertInStore(InStore inStore);

2.5.3 Service

@Service
public class InStoreServiceImpl implements InStoreService {

    //注入InStoreMapper
    @Autowired
    private InStoreMapper inStoreMapper;

    //注入PurchaseMapper
    @Autowired
    private PurchaseMapper purchaseMapper;

//    //添加入库单的业务方法
    @Transactional//事务处理
    @Override
    public Result saveInStore(InStore inStore, Integer buyId) {
        //添加入库单
        int i = inStoreMapper.insertInStore(inStore);
        if(i>0){
            //根据id将采购单状态改为已入库
            int j = purchaseMapper.setIsInById(buyId);
            if(j>0){
                return Result.ok("入库单添加成功!");
            }
            return Result.err(Result.CODE_ERR_BUSINESS, "入库单添加失败!");
        }
        return Result.err(Result.CODE_ERR_BUSINESS, "入库单添加失败!");
    }
    
}

2.5.4 Controller

//  生成入库单的url接口
@RequestMapping("/in-warehouse-record-add")
public Result addInStore(@RequestBody Purchase purchase, @RequestHeader("Token") String token) {
    //获取当前登录的用户
    CurrentUser currentUser = tokenUtils.getCurrentUser(token);

    //获取当前登录的用户id 创建入库单的用户id
    int createBy = currentUser.getUserId();

    //创建InStore对象封装添加的入库单的信息
    InStore inStore = new InStore();
    inStore.setStoreId(purchase.getStoreId());
    inStore.setProductId(purchase.getProductId());
    inStore.setInNum(purchase.getFactBuyNum());
    inStore.setCreateBy(createBy);

    return inStoreService.saveInStore(inStore,purchase.getBuyId());
}

2.5.5 效果图

image-20230829224201287

三、入库单管理

image-20230924102744290

3.1 分页查询入库单

我们要完成的就是下面这个功能

3.1.1 Mapper

//  分页查询的方法
//  查询入库单行数的方法
    public Integer findInStoreCount(@Param("inStore")InStore inStore);

//  分页查询入库单的方法
    public List<InStore> findInStorePage(@Param("page") Page page,@Param("inStore") InStore inStore);

具体实现

<!--查询入库单行数的方法-->
<select id="findInStoreCount" resultType="java.lang.Integer">
    select count(*)
    from in_store t1,
    product t2
    where t1.product_id = t2.product_id
    <if test="inStore.storeId !=null">
        and t1.store_id = #{inStore.storeId}
    </if>
    <if test="inStore.productName !=null and inStore.productName !='' ">
        and t2.product_name like concat('%',#{inStore.productName},'%')
    </if>
    <if test="inStore.startTime !=null and inStore.startTime!='' ">
        and t1.create_time &gt; = #{inStore.startTime}
    </if>
    <if test="inStore.endTime !=null and inStore.endTime!='' ">
        and t1.create_time &lt; = #{inStore.endTime}
    </if>
</select>
<!--分页查询入库单的方法-->
<select id="findInStorePage" resultType="com.pn.entity.InStore">
    select t1.*,t2.product_name,t2.in_price,t3.store_name,t4.user_code
    from in_store t1,
    product t2,
    store t3,
    user_info t4
    where t1.product_id = t2.product_id
    and t1.store_id = t3.store_id
    and t1.create_by = t4.user_id
    <if test="inStore.storeId !=null">
        and t1.store_id = #{inStore.storeId}
    </if>
    <if test="inStore.productName !=null and inStore.productName !='' ">
        and t2.product_name like concat('%',#{inStore.productName},'%')
    </if>
    <if test="inStore.startTime !=null and inStore.startTime!='' ">
        and t1.create_time &gt; = #{inStore.startTime}
    </if>
    <if test="inStore.endTime !=null and inStore.endTime!='' ">
        and t1.create_time &lt; = #{inStore.endTime}
    </if>
    order by t1.create_time desc
    limit #{page.limitIndex},#{page.pageSize}
</select>

3.1.2 Service

    @Override
    public Page queryInStore(Page page, InStore inStore) {
//      查询入库单行数
        Integer count = inStoreMapper.findInStoreCount(inStore);

//      分页查询入库单
        List<InStore> inStorePageList = inStoreMapper.findInStorePage(page, inStore);
        
        page.setResultList(inStorePageList);
        page.setTotalNum(count);
        
        return page;
    }

3.1.3 Controller

@RequestMapping("/instore-page-list")
public Result inStoreListPage(Page page, InStore inStore) {

    return Result.ok(inStoreService.queryInStore(page, inStore));
}

3.1.4 效果图

image-20230924113641134

3.2 确认入库单

image-20230924200345175

image-20230924201341330

入库流程

  • 将入库单状态改为已入库
  • 增加商品的库存

3.1.1 Mapper

将入库单的状态修改为已入库

//  根据id修改入库单状态为已入库的方法
    public int  setIsInById(@Param("isStoreId") Integer isStoreId);
<update id="setIsInById">
   update in_store set is_in = 1 where  ins_id = #{isStoreId}
</update>

修改product表中的库存数量

//  根据id修改商品库存的方法
    public int setInventById(@Param("productId")Integer productId,@Param("invent")Integer invent);
<!--根据id修改商品库存的方法-->
<update id="setInventById">
  update product set product_invent = product_invent+#{invent} where product_id = #{productId}
</update>

3.1.2 Service

    @Override
    @Transactional
    public Result inStoreConfirm(InStore inStore) {
//      修改入库单状态
        int success = inStoreMapper.setIsInById(inStore.getInsId());
        if (success>0){
//          修改商品库存
//          商品入库数量增加
            int successCount = productMapper.setInventById(inStore.getProductId(), inStore.getInNum());
            if (successCount>0){
                return Result.ok("入库单确认成功!");
            }
        }

        return Result.err(Result.CODE_ERR_BUSINESS,"入库单确认失败!");
    }

3.1.3 Controller

//  确认入库的url
@RequestMapping("/instore-confirm")
public Result confirmInStore(@RequestBody InStore inStore) {
    return inStoreService.inStoreConfirm(inStore);
}

四、出库单管理

image-20230924212444875

4.1 确认出库单

  • 将出库单状态修改为1,表示已出库
  • 修改商品的库存 – 减库存

4.1.1 Mapper

修改出库单状态

//   根据id修改出库单状态为已出库的方法
    public int setIsOutById(@Param("outStoreId") Integer outStoreId);
<update id="setIsOutById">
    update out_store
    set is_out =1
    where outs_id = #{outStoreId}
</update>

根据商品id查询商品库存的方法

//  根据商品id查询商品库存的方法
    public int findInventById(@Param("productId")Integer productId);
<select id="findInventById" resultType="java.lang.Integer">
   select product_invent from product where product_id  =#{productId}
</select>

修改商品库存数量

依然是3.2.1中的Mapper

4.1.2 Service

    @Override
    @Transactional
    public Result outStoreConfirm(OutStore outStore) {
//      判断商品库存是否充足
        int productInvent = productMapper.findInventById(outStore.getProductId());
        if (productInvent < outStore.getOutNum()) {
           return  Result.err(Result.CODE_ERR_BUSINESS,"商品库存不足!");
        }
//      修改出库单状态
        outStoreMapper.setIsOutById(outStore.getStoreId());
//      修改商品库存
        productMapper.setInventById(outStore.getProductId(),-outStore.getOutNum());
        
        return Result.ok("确认出库成功");
    }

4.1.3 Controller

//  确认出库单url接口
@RequestMapping("/outstore-confirm")
public Result confirmOutStore(@RequestBody OutStore outStore) {
    return outStoreService.outStoreConfirm(outStore);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker - Docker启动的MySql修改密码

基于上篇文章《Docker - Docker安装MySql并启动》&#xff0c;在Docker中启动了mysql服务&#xff0c;但是密码设置成了123456&#xff0c;想起来学生时代数据库被盗走&#xff0c;然后邮箱收到被勒索BTC的场景还历历在目&#x1f62d;&#xff0c;密码不能再设置这么简单了啊&…

【prometheus+grafana】快速入门搭建-服务监控各插件及企业微信告警

目录 1. 安装qywechat_webhook插件通知企业微信 1.1. 新建目录/opt/prometheus/qywechathook/conf 1.2. 新建编辑wx.js文件 1.3. 运行启动容器 1.4. 查看容器启动情况 1.5 企业微信通知地址为&#xff1a; 2. 安装altermanager 2.1. 下载altermanager 2.2. 解压alterm…

Linux 远程登录(Xshell7)

为什么需要远程登录Linux&#xff1f;因为通常在公司做开发的时候&#xff0c;Linux 一般作为服务器使用&#xff0c;而服务器一般放在机房&#xff0c;linux服务器是开发小组共享&#xff0c;且正式上线的项目是运行在公网&#xff0c;因此需要远程登录到Liux进行项日管理或者…

LeetCode算法二叉树—二叉树的中序遍历

目录 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; 运行结果&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&am…

Linux--线程 创建、等待、退出

Linux上线程开发API概要 多线程开发的最基本概念主要包含&#xff1a;线程&#xff0c;互斥锁&#xff0c;条件。   线程 3 种操作&#xff1a;线程的创建&#xff0c;退出&#xff0c;等待。   互斥锁 4 种操作&#xff1a;创建&#xff0c;销毁&#xff0c;加锁和解锁。…

iterm2 配置自动登录跳板机,无需输入密码和google验证码

1、准备&#xff1a;编写Python脚本计算生成google身份验证码&#xff0c;参考python3 实现 google authenticator 认证/校验_我要买GTR45的博客-CSDN博客 脚本拿来就可以用&#xff0c;只需要替换脚本中的secret字段的值为自己的密钥即可 2、在~/.ssh/目录下编写expect脚本 …

多台群晖实现按计划WOL网络自动唤醒数据冷备份

几年前买了2盘位的DS218&#xff0c;但是随着照片的增加已经不够用。年中购入了4盘位的群晖DS923、2块16T西数数企业级硬盘、1块2T intel企业级 SSD 1.什么是冷备份 冷备是离线备份&#xff0c;备份好的数据可以单独存取&#xff0c;定期冷备可以保证数据安全&#xff0c;适合…

怎样快速打开github.com

1访问这个网站很慢是因为有DNS污染&#xff0c;被一些别有用心的人搞了鬼了&#xff0c; 2还有一个重要原因是不同的DNS服务器解析的速度不一样。 1 建议设置dns地址为114.114.114.114.我觉得假设一个县城如果有一个DNS服务器的话&#xff0c;这个服务器很可能不会存储…

求组合数(递归版)(杨辉三角形)

description 请编写递归函数&#xff0c;求组合数。 函数原型 double Cmb(int x, int y); 说明&#xff1a;x 和 y 为非负整数&#xff0c;且 x≥y&#xff0c;函数值为组合数 C x y ​ 。 裁判程序 #include <stdio.h> double Cmb(int x, int y); int main() { int m…

基于华为云云耀云服务器L实例下的场景体验 | Docker可视化工具Portainer

基于华为云云耀云服务器L实例下的场景体验 | Docker可视化工具Portainer 1. 简介2. 准备工作3. 工具配置3.1. 配置安全组3.2. 初始化配置Portainer 4. 使用Portainer部署MySQL容器4.1. 创建MySQL容器4.2. 连接MySQL容器 1. 简介 随着云计算时代的进一步深入&#xff0c;越来越多…

【计算机网络笔记三】传输层

端口 在网络中如何标记一个进程&#xff1f; TCP/IP 体系的传输层使用【端口号】来标记区分应用层的不同应用进程。这里说的端口是一个逻辑的概念&#xff0c;并不是实实在在的物理端口。 端口号使用 16 比特表示&#xff0c;取值范围是 0 ~ 65535&#xff0c;端口号分为以…

「大数据-2.0」安装Hadoop和部署HDFS集群

目录 一、下载Hadoop安装包 二、安装Hadoop 0. 安装Hadoop前的必要准备 1. 以root用户登录主节点虚拟机 2. 上传Hadoop安装包到主节点 3. 解压缩安装包到/export/server/目录中 4. 构建软链接 三、部署HDFS集群 0. 集群部署规划 1. 进入hadoop安装包内 2 进入etc目录下的hadoop…

分享40个Python源代码总有一个是你想要的

分享40个Python源代码总有一个是你想要的 源码下载链接&#xff1a;https://pan.baidu.com/s/1PNR3_RqVWLPzSBUVAo2rnA?pwd8888 提取码&#xff1a;8888 下面是文件的名字。 dailyfresh-天天生鲜 Django-Quick-Start freenom-自动续期域名的脚本 Full Stack Python简体中…

竟然可以在一个项目中混用 Vue 和 React?

React和Vue是前端开发中的两大热门框架&#xff0c;各自都有着强大的功能和丰富的生态系统。然而&#xff0c;你有没有想过&#xff0c;在一个项目中同时使用React和Vue&#xff1f;是的&#xff0c;你没有听错&#xff0c;可以在同一个项目中混用这两个框架&#xff01;本文就…

redis学习(一)——初识redis

redis学习&#xff08;一&#xff09;——初识redis 非关系型数据库 redis是非关系型数据库&#xff0c;和mysql不同&#xff0c;redis中的所有数据都是以key&#xff1a;value形式存在的 两者区别 SQL | NoSQL 结构化 | 非结构化 关联的 | 无关联 sql查询 | 非sql ACI…

[python 刷题] 22 Generate Parentheses

[python 刷题] 22 Generate Parentheses 题目&#xff1a; Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. 这里 well-formed 指的就是合法的括号配对&#xff0c;这里会提两个解 第一个是暴力解&#xff0c;也就…

服务注册发现_服务发现Discovery

修改payment8001的Controller /*** 支付控制层*/ Slf4j RestController public class PaymentController {Autowiredprivate DiscoveryClient discoveryClient;GetMapping("/payment/discovery")public Object discovery(){// 获取所有微服务信息List<String>…

栈和队列2——队列的实现

栈和队列2——队列的实现 一&#xff0c;前言二&#xff0c;队列的定义三&#xff0c;队列的结构四&#xff0c;队列的实现4.1队列初始化4.2队列的销毁4.3队列的尾插4.4队列的删除4.5找队头的数据4.6找队尾的数据4.7判断为空4.8计算长度 五&#xff0c;小结 一&#xff0c;前言…

STL常用遍历,查找,算法

目录 1.遍历算法 1.1for_earch 1.2transform 2.常用查找算法 2.1find&#xff0c;返回值是迭代器 2.1.1查找内置数据类型 2.1.2查找自定义数据类型 2.2fin_if 按条件查找元素 2.2.1查找内置的数据类型 2.2.2查找内置数据类型 2.3查找相邻元素adjeacent_find 2.4查找指…

简易介绍如何使用拼多多商品详情 API。

拼多多&#xff08;Pinduoduo&#xff09;是中国一家快速发展的电商平台&#xff0c;为了帮助开发者更好地接入拼多多&#xff0c;平台提供了丰富的 API 接口供开发者使用&#xff0c;其中包括获取拼多多商品详情的 API。接下来&#xff0c;我们将介绍如何使用拼多多商品详情 A…