以下接口和代码完成两项功能:
- 查询未领取的采购单
- 合并采购
创建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文件夹中添加库存服务相关的枚举类WareConstant,WareConstant信息如下:
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);
}
重启库存服务,测试效果:
有一个新建状态的采购单,如下:
选取数据,选择批量操作中的合并整单,如下:
选择合并到整单时,能够获取到未领取的采购单,如下:
点击确定,数据显示已分配,如下:
回到采购单,点击分配,选择人员,效果如下:
合并采购需求功能编写完成。