package com.alatus.mall.ware.service.impl;
import com.alatus.common.constant.WareConstant;
import com.alatus.mall.ware.entity.PurchaseDetailEntity;
import com.alatus.mall.ware.service.PurchaseDetailService;
import com.alatus.mall.ware.vo.MergeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.PurchaseDao;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import org.springframework.transaction.annotation.Transactional;
@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {
@Autowired
private PurchaseDetailService purchaseDetailService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPageUnReceive(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);
}
@Override
@Transactional
public void mergePurchase(MergeVo 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> detailEntities = items.stream().map(item -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setPurchaseId(finalPurchaseId);
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
}
}
package com.alatus.mall.ware.service.impl;
import com.alatus.common.constant.WareConstant;
import com.alatus.mall.ware.entity.PurchaseDetailEntity;
import com.alatus.mall.ware.service.PurchaseDetailService;
import com.alatus.mall.ware.vo.MergeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.Query;
import com.alatus.mall.ware.dao.PurchaseDao;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import org.springframework.transaction.annotation.Transactional;
@Service("purchaseService")
public class PurchaseServiceImpl extends ServiceImpl<PurchaseDao, PurchaseEntity> implements PurchaseService {
@Autowired
private PurchaseDetailService purchaseDetailService;
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<PurchaseEntity> page = this.page(
new Query<PurchaseEntity>().getPage(params),
new QueryWrapper<PurchaseEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPageUnReceive(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);
}
@Override
@Transactional
public void mergePurchase(MergeVo 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> detailEntities = items.stream().map(item -> {
PurchaseDetailEntity detailEntity = new PurchaseDetailEntity();
detailEntity.setPurchaseId(finalPurchaseId);
detailEntity.setStatus(WareConstant.PurchaseDetailStatusEnum.ASSIGNED.getCode());
return detailEntity;
}).collect(Collectors.toList());
purchaseDetailService.updateBatchById(detailEntities);
}
}
package com.alatus.mall.ware.service;
import com.alatus.mall.ware.vo.MergeVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.alatus.common.utils.PageUtils;
import com.alatus.mall.ware.entity.PurchaseEntity;
import java.util.Map;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
public interface PurchaseService extends IService<PurchaseEntity> {
PageUtils queryPage(Map<String, Object> params);
PageUtils queryPageUnReceive(Map<String, Object> params);
void mergePurchase(MergeVo mergeVo);
}
package com.alatus.mall.ware.service;
import com.alatus.mall.ware.vo.MergeVo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.alatus.common.utils.PageUtils;
import com.alatus.mall.ware.entity.PurchaseEntity;
import java.util.Map;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
public interface PurchaseService extends IService<PurchaseEntity> {
PageUtils queryPage(Map<String, Object> params);
PageUtils queryPageUnReceive(Map<String, Object> params);
void mergePurchase(MergeVo mergeVo);
}
package com.alatus.mall.ware.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;
import com.alatus.mall.ware.vo.MergeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.R;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 未被领取的采购单
*/
@GetMapping("/unreceive/list")
public R unReceiveList(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPageUnReceive(params);
return R.ok().put("page", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
PurchaseEntity purchase = purchaseService.getById(id);
return R.ok().put("purchase", purchase);
}
/**
* 保存
*/
@RequestMapping("/save")
public R save(@RequestBody PurchaseEntity purchase){
purchase.setCreateTime(new Date());
purchase.setUpdateTime(new Date());
purchaseService.save(purchase);
return R.ok();
}
/**
* 保存
*/
@PostMapping("/merge")
public R Merge(@RequestBody MergeVo mergeVo){
purchaseService.mergePurchase(mergeVo);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody PurchaseEntity purchase){
purchaseService.updateById(purchase);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
purchaseService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}
package com.alatus.mall.ware.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.Map;
import com.alatus.mall.ware.vo.MergeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alatus.mall.ware.entity.PurchaseEntity;
import com.alatus.mall.ware.service.PurchaseService;
import com.alatus.common.utils.PageUtils;
import com.alatus.common.utils.R;
/**
* 采购信息
*
* @author alatus
* @email 1571345941@qq.com
* @date 2024-03-12 14:08:46
*/
@RestController
@RequestMapping("ware/purchase")
public class PurchaseController {
@Autowired
private PurchaseService purchaseService;
/**
* 未被领取的采购单
*/
@GetMapping("/unreceive/list")
public R unReceiveList(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPageUnReceive(params);
return R.ok().put("page", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = purchaseService.queryPage(params);
return R.ok().put("page", page);
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
PurchaseEntity purchase = purchaseService.getById(id);
return R.ok().put("purchase", purchase);
}
/**
* 保存
*/
@RequestMapping("/save")
public R save(@RequestBody PurchaseEntity purchase){
purchase.setCreateTime(new Date());
purchase.setUpdateTime(new Date());
purchaseService.save(purchase);
return R.ok();
}
/**
* 保存
*/
@PostMapping("/merge")
public R Merge(@RequestBody MergeVo mergeVo){
purchaseService.mergePurchase(mergeVo);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody PurchaseEntity purchase){
purchaseService.updateById(purchase);
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
purchaseService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}
package com.alatus.common.constant;
public class WareConstant {
public enum PurchaseStatusEnum{
CREATED(0,"新建"),ASSIGNED(1,"已分配"),
RECEIVED(2,"已领取"),FINISHED(3,"已完成"),
HAS_ERROR(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,"正在采购"),FINISHED(3,"已完成"),
HAS_ERROR(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;
}
}
}
package com.alatus.common.constant;
public class WareConstant {
public enum PurchaseStatusEnum{
CREATED(0,"新建"),ASSIGNED(1,"已分配"),
RECEIVED(2,"已领取"),FINISHED(3,"已完成"),
HAS_ERROR(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,"正在采购"),FINISHED(3,"已完成"),
HAS_ERROR(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;
}
}
}
package com.alatus.mall.ware.vo;
import lombok.Data;
import java.util.List;
@Data
public class MergeVo {
// 整单ID
private Long purchaseId;
// 合并项集合
private List<Long> items;
}
package com.alatus.mall.ware.vo;
import lombok.Data;
import java.util.List;
@Data
public class MergeVo {
// 整单ID
private Long purchaseId;
// 合并项集合
private List<Long> items;
}