天天看點

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&建立采購需求2:查詢庫存&建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

電商項目——初識電商——第一章——上篇

電商項目——分布式基礎概念和電商項目微服務架構圖,劃分圖的詳解——第二章——上篇

電商項目——電商項目的虛拟機環境搭建_VirtualBox,Vagrant——第三章——上篇

電商項目——Linux虛拟機中安裝docker,mysql,redis_VirtualBox——第四章——上篇

電商項目——電商項目的環境搭建_開發工具&環境搭建——第五章——上篇

電商項目——快速開發人人開源搭建背景管理系統&代碼生成器逆向工程搭建——第六章——上篇

電商項目——分布式元件(SpringCloud Alibaba,SpringCloud)——第七章——上篇

電商項目——前端基礎——第八章——上篇

電商項目——商品服務-API-三級分類——第九章——上篇

電商項目——商品服務-API-品牌管理——第十章——上篇

電商項目——商品服務-API-屬性分組——第十一章——上篇

電商項目——商品服務-API-品牌管理——第十二章——上篇

電商項目——商品服務-API-平台屬性——第十三章——上篇

電商項目——商品服務-API-新增商品——第十四章——上篇

電商項目——商品服務-API-商品管理——第十五章——上篇

電商項目——商品服務-API-倉庫管理——第十六章——上篇

文章目錄

  • 1:整合ware服務&建立采購需求
  • 2:查詢庫存&建立采購需求
  • 3:合并采購需求
  • 4:領取采購單
  • 5:完成采購
  • 6:商品管理-SPU規格維護

1:整合ware服務&建立采購需求

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&建立采購需求2:查詢庫存&建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

WareInfoController

@RestController
@RequestMapping("ware/wareinfo")
public class WareInfoController {
    @Autowired
    private WareInfoService wareInfoService;

    /**
     * 清單
     */
    @RequestMapping("/list")
    //@RequiresPermissions("ware:wareinfo:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = wareInfoService.queryPageByCondition(params);

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

           

WareInfoServiceImpl

@Override
    public PageUtils queryPageByCondition(Map<String, Object> params) {
        QueryWrapper<WareInfoEntity> wrapper = new QueryWrapper<>();
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            wrapper.eq("id",key).or().like("name",key).or().like("address",key).or().like("areacode",key);
        }
        IPage<WareInfoEntity> page = this.page(
                new Query<WareInfoEntity>().getPage(params),
               wrapper
        );

        return new PageUtils(page);

    }
           

2:查詢庫存&建立采購需求

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

WareSkuController

@RestController
@RequestMapping("ware/waresku")
public class WareSkuController {
    @Autowired
    private WareSkuService wareSkuService;

    /**
     * 清單
     */
    @RequestMapping("/list")
    //@RequiresPermissions("ware:waresku:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = wareSkuService.queryPageByCondition(params);

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

WareSkuServiceImpl

/**
     * {
     page: 1,//目前頁碼
     limit: 10,//每頁記錄數
     sidx: 'id',//排序字段
     order: 'asc/desc',//排序方式
     wareId: 123,//倉庫id
     skuId: 123//商品id
     }
     * @param params
     * @return
     */
    @Override
    public PageUtils queryPageByCondition(Map<String, Object> params) {


        QueryWrapper<WareSkuEntity> wrapper = new QueryWrapper<>();

        String wareId = (String) params.get("wareId");
        if (!StringUtils.isEmpty(wareId)){
            wrapper.eq("ware_Id",wareId);

        }

        String skuId = (String) params.get("skuId");
        if (!StringUtils.isEmpty(skuId)){
            wrapper.eq("sku_Id",skuId);

        }
        IPage<WareSkuEntity> page = this.page(
                new Query<WareSkuEntity>().getPage(params),
                wrapper
        );

        return new PageUtils(page);

    }
           
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

PurchaseDetailController

@RestController
@RequestMapping("ware/purchasedetail")
public class PurchaseDetailController {
    @Autowired
    private PurchaseDetailService purchaseDetailService;

    /**
     * 清單
     */
    @RequestMapping("/list")
    //@RequiresPermissions("ware:purchasedetail:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = purchaseDetailService.queryPageByCondition(params);

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

           

PurchaseDetailServiceImpl

3:合并采購需求

前面我們建立了兩個采購需求,接下來,我們要将這兩個采購需求進行合并,成采購單

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

第一步:完成合并采購單功能

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

PurchaseController

@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
    @Autowired
    private PurchaseService purchaseService;

    /**
     * 清單
     */
    @RequestMapping("/unreceive/list")
    //@RequiresPermissions("ware:purchase:list")
    public R unreceiveList(@RequestParam Map<String, Object> params){
        PageUtils page = purchaseService.queryPageUnreceiveList(params);

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

PurchaseServiceImpl

@Override
    public PageUtils queryPageUnreceiveList(Map<String, Object> params) {

        QueryWrapper<PurchaseEntity> wrapper = new QueryWrapper<>();

        //查詢出1,0的資料為status
        wrapper.eq("status",0).or().eq("status",1);
        IPage<PurchaseEntity> page = this.page(
                new Query<PurchaseEntity>().getPage(params),wrapper
        );

        return new PageUtils(page);
    }
           
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

PurchaseController

@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
    @Autowired
    private PurchaseService purchaseService;


    @RequestMapping("/merge")
    //@RequiresPermissions("ware:purchase:list")
    public R merge(@RequestBody MergeVo mergeVo){
         purchaseService.merge(mergeVo);

        return R.ok();
    }
           
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

PurchaseServiceImpl

@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {

    @Autowired
    PurchaseDetailService purchaseDetailService;
 @Transactional
    @Override
    public void merge(MergeVo mergeVo) {

        Long purchaseId = mergeVo.getPurchaseId();
        if (purchaseId==null){
            PurchaseEntity purchaseEntity=new PurchaseEntity();

            purchaseEntity.setStatus(WareConstant.PurchaseStatusEnum.CREATE.getCode());
            purchaseEntity.setUpdateTime(new Date());
            purchaseEntity.setUpdateTime(new Date());
            this.save(purchaseEntity);
            Long purchaseEntityId = purchaseEntity.getId();
        }

        List<Long> items=mergeVo.getItems();
        Long finalPurchaseEntityId=purchaseId;

        List<PurchaseDetailEntity> collect = items.stream().map(i -> {
            PurchaseDetailEntity purchaseEntity = new PurchaseDetailEntity();
            purchaseEntity.setStatus(WareConstant.PurchaseDetailsStatusEnum.ASSIGEND.getCode());
            purchaseEntity.setPurchaseId(finalPurchaseEntityId);
            purchaseEntity.setId(i);
            return purchaseEntity;
        }).collect(Collectors.toList());

        purchaseDetailService.updateBatchById(collect);

    }
           
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

4:領取采購單

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

PurchaseController

@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
    @Autowired
    private PurchaseService purchaseService;

    /**
     * 領取采購單
     * @param ids
     * @return
     */
    ///ware/purchase/received
    public R received(@RequestBody List<Long> ids){

        purchaseService.received(ids);
        return R.ok();
    }
           

PurchaseServiceImpl

/**
     *
     * @param ids 采購單id
     */
    @Override
    public void received(List<Long> ids) {

        //1:确認目前采購單是建立或者已配置設定狀态
        //把采購單的詳細資訊查出來
        List<PurchaseEntity> purchaseEntities = ids.stream().map(id -> {
            PurchaseEntity byId = this.getById(id);
            return byId;
        }).filter(item->{
            if (item.getStatus()==WareConstant.PurchaseStatusEnum.CREATE.getCode()||
                    item.getStatus()==WareConstant.PurchaseStatusEnum.ASSIGEND.getCode()  ){
                return true;
            }
            return false;
        }).map(items->{
            items.setStatus(WareConstant.PurchaseStatusEnum.RECEIVE.getCode());
            items.setUpdateTime(new Date());

            return items;
        }).collect(Collectors.toList());

        //2:改變采購單的狀态
        this.updateBatchById(purchaseEntities);

        //3:改變采購項的狀态
        purchaseEntities.forEach((item->{
            List<PurchaseDetailEntity> entities= purchaseDetailService.listDetailByPurchaseId(item.getId());

            List<PurchaseDetailEntity> purchaseDetailEntities = entities.stream().map(entitiess -> {
                PurchaseDetailEntity purchaseDetailEntity = new PurchaseDetailEntity();

                purchaseDetailEntity.setId(entitiess.getId());
                purchaseDetailEntity.setStatus(WareConstant.PurchaseDetailsStatusEnum.BUYING.getCode());
                return purchaseDetailEntity;
            }).collect(Collectors.toList());
            purchaseDetailService.updateBatchById(purchaseDetailEntities);
        }));


    }

           

5:完成采購

6:商品管理-SPU規格維護

電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護

AttrController

@RestController
@RequestMapping("product/attr")
public class AttrController {
    @Autowired
    private AttrService attrService;

    @Autowired
    ProductAttrValueService productAttrValueService;

    @GetMapping("/base/listforspu/{spuId}")
    public R baseAttrlistforspu(@PathVariable("spuId") Long spuId){

       List<ProductAttrValueEntity> entities= productAttrValueService.baseAttrlistforspu(spuId);
       return R.ok().put("data",entities);
    }
           

ProductAttrValueServiceImpl

@Override
    public List<ProductAttrValueEntity> baseAttrlistforspu(Long spuId) {

        List<ProductAttrValueEntity> entities = this.baseMapper.selectList(new QueryWrapper<ProductAttrValueEntity>().eq("spu_id", spuId));
        return entities;
    }
           

AttrController

@PostMapping("/update/{spuId}")
    // @RequiresPermissions("product:attr:update")
    public R updateSpuAttr(@RequestBody List<ProductAttrValueEntity> attr,@PathVariable("spuId") Long spuId){

        productAttrValueService.updateSpuAttr(spuId,attr);

        return R.ok();
    }
           

ProductAttrValueServiceImpl

@Transactional
    @Override
    public void updateSpuAttr(Long spuId, List<ProductAttrValueEntity> attr) {
        //1:删除這個spuId之前對應的所有屬性
        this.baseMapper.delete(new QueryWrapper<ProductAttrValueEntity>().eq("spu_id",spuId));

        List<ProductAttrValueEntity> collect = attr.stream().map(item -> {
            item.setSpuId(spuId);
            return item;
        }).collect(Collectors.toList());

        this.saveBatch(collect);
    }
           
電商項目——商品服務-API-倉庫管理——第十六章——上篇1:整合ware服務&amp;建立采購需求2:查詢庫存&amp;建立采購需求3:合并采購需求4:領取采購單5:完成采購6:商品管理-SPU規格維護