五十五.合并采购需求功能编写

以下接口和代码完成两项功能:

  • 查询未领取的采购单
  • 合并采购

创建qo文件夹以及合并采购请求参数类MergeQo,如下:
在这里插入图片描述
MergeQo

import lombok.Data;

import java.util.List;

@Data
public class MergeQo {
    private Long purchaseId; //整单id
    private List<Long> items;//[1,2,3,4] //合并项集合
}

webshop-common项目的constant文件夹中添加库存服务相关的枚举类WareConstantWareConstant信息如下:

package com.jiejie.common.constant;

public class WareConstant {

    public enum PurchaseStatusEnum {
        CREATED(0, "新建"), ASSIGNED(1, "已分配"),
        RECEIVE(2, "已领取"), FINISH(3, "已完成"),
        HASERROR(4, "有异常");
        private int code;
        private String msg;

        PurchaseStatusEnum(int code, String msg) {
            this.code = code;
            this.msg = msg;
        }

        public int getCode() {
            return code;
        }

        public String getMsg() {
            return msg;
        }
    }


    public enum PurchaseDetailStatusEnum {
        CREATED(0, "新建"), ASSIGNED(1, "已分配"),
        BUYING(2, "正在采购"), FINISH(3, "已完成"),
        HASERROR(4, "采购失败");
        private int code;
        private String msg;

        PurchaseDetailStatusEnum(int code, String msg) {
            this.code = code;
            this.msg = msg;
        }

        public int getCode() {
            return code;
        }

        public String getMsg() {
            return msg;
        }
    }
}

PurchaseController类中添加相应接口,如下:

 /**
     * 合并采购单
     *
     * @param mergeQo
     * @return
     */
    @PostMapping("/merge")
    public R merge(@RequestBody MergeQo mergeQo) {

        purchaseService.mergePurchase(mergeQo);
        return R.ok();
    }

    /**
     * 查询未领取的采购单
     *
     * @param params
     * @return
     */
    @RequestMapping("/unreceive/list")
    //@RequiresPermissions("ware:purchase:list")
    public R unreceivelist(@RequestParam Map<String, Object> params) {
        PageUtils page = purchaseService.queryPageUnreceivePurchase(params);

        return R.ok().put("page", page);
    }

PurchaseService类中添加相应方法,如下:

 /**
     * 查询未领取的采购单
     *
     * @param params
     * @return
     */
    PageUtils queryPageUnreceivePurchase(Map<String, Object> params);

    /**
     * 合并采购单
     *
     * @param mergeQo
     */
    void mergePurchase(MergeQo mergeQo);

PurchaseServiceImpl类中添加方法相应的实现逻辑,如下:

@Override
    public PageUtils queryPageUnreceivePurchase(Map<String, Object> params) {
        IPage<PurchaseEntity> page = this.page(
                new Query<PurchaseEntity>().getPage(params),
                new QueryWrapper<PurchaseEntity>().eq("status", 0).or().eq("status", 1)
        );

        return new PageUtils(page);
    }

    @Transactional
    @Override
    public void mergePurchase(MergeQo mergeVo) {
        Long purchaseId = mergeVo.getPurchaseId();
        if (purchaseId == null) {
            PurchaseEntity purchaseEntity = new PurchaseEntity();
            purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.CREATED.getCode());
            purchaseEntity.setCreateTime(new Date());
            purchaseEntity.setUpdateTime(new Date());
            this.save(purchaseEntity);
            purchaseId = purchaseEntity.getId();
        }

        List<Long> items = mergeVo.getItems();
        Long finalPurchaseId = purchaseId;
        List<PurchaseDetailEntity> collect = items.stream().map(i -> {
            PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
            detailEntity.setId(i);
            detailEntity.setPurchaseId(finalPurchaseId);
            detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode());
            return detailEntity;
        }).collect(Collectors.toList());
        detailService.updateBatchById(collect);
        PurchaseEntity purchaseEntity = new PurchaseEntity();
        purchaseEntity.setId(purchaseId);
        purchaseEntity.setUpdateTime(new Date());
        this.updateById(purchaseEntity);
    }

重启库存服务,测试效果:

有一个新建状态的采购单,如下:
在这里插入图片描述
选取数据,选择批量操作中的合并整单,如下:
在这里插入图片描述

选择合并到整单时,能够获取到未领取的采购单,如下:
在这里插入图片描述
点击确定,数据显示已分配,如下:
在这里插入图片描述
回到采购单,点击分配,选择人员,效果如下:
在这里插入图片描述

合并采购需求功能编写完成。

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/107601912