拆分think模块包
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
package com.gxwebsoft.shop.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gxwebsoft.common.core.web.PageParam;
|
||||
import com.gxwebsoft.common.core.web.PageResult;
|
||||
import com.gxwebsoft.shop.entity.Cashier;
|
||||
import com.gxwebsoft.shop.mapper.CashierMapper;
|
||||
import com.gxwebsoft.shop.param.CashierParam;
|
||||
import com.gxwebsoft.shop.service.CashierService;
|
||||
import com.gxwebsoft.shop.vo.CashierVo;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 收银Service实现
|
||||
*
|
||||
* @author 科技小王子
|
||||
* @since 2024-08-04 11:51:43
|
||||
*/
|
||||
@Service
|
||||
public class CashierServiceImpl extends ServiceImpl<CashierMapper, Cashier> implements CashierService {
|
||||
|
||||
@Override
|
||||
public PageResult<Cashier> pageRel(CashierParam param) {
|
||||
PageParam<Cashier, CashierParam> page = new PageParam<>(param);
|
||||
page.setDefaultOrder("create_time desc");
|
||||
List<Cashier> list = baseMapper.selectPageRel(page, param);
|
||||
return new PageResult<>(list, page.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public CashierVo listRel(CashierParam param) {
|
||||
List<Cashier> list = baseMapper.selectListRel(param);
|
||||
// 排序
|
||||
PageParam<Cashier, CashierParam> page = new PageParam<>();
|
||||
page.setDefaultOrder("create_time desc");
|
||||
|
||||
final List<Cashier> cashiers = page.sortRecords(list);
|
||||
|
||||
// 整理数据
|
||||
final CashierVo vo = new CashierVo();
|
||||
// 计算单品总价
|
||||
for (Cashier cashier : cashiers) {
|
||||
cashier.setTotalPrice(cashier.getPrice().multiply(BigDecimal.valueOf(cashier.getCartNum())));
|
||||
}
|
||||
// 计算购物车金额
|
||||
final Integer cartNum = cashiers.stream().map(Cashier::getCartNum).reduce(Integer::sum).orElse(0);
|
||||
final Integer selectNums = cashiers.stream().filter(d -> d.getSelected().equals(true)).map(Cashier::getCartNum).reduce(Integer::sum).orElse(0);
|
||||
final BigDecimal totalPrice = cashiers.stream().filter(d -> d.getSelected().equals(true)).map(Cashier::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
// 封装数据
|
||||
vo.setCashiers(cashiers);
|
||||
vo.setTotalPrice(totalPrice);
|
||||
vo.setTotalNums(Long.valueOf(cartNum));
|
||||
vo.setSelectNums(Long.valueOf(selectNums));
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
public List<CashierVo> listRelByGroupId(CashierParam param) {
|
||||
List<Cashier> list = baseMapper.selectListRel(param);
|
||||
// 排序
|
||||
PageParam<Cashier, CashierParam> page = new PageParam<>();
|
||||
page.setDefaultOrder("create_time desc");
|
||||
final List<Cashier> cashiers = page.sortRecords(list);
|
||||
|
||||
// 计算单品总价
|
||||
cashiers.forEach(d->{
|
||||
d.setTotalPrice(d.getPrice().multiply(BigDecimal.valueOf(d.getCartNum())));
|
||||
});
|
||||
|
||||
final Map<Integer, List<Cashier>> collectByGroupId = cashiers.stream().collect(Collectors.groupingBy(Cashier::getGroupId));
|
||||
|
||||
// 整理数据
|
||||
final ArrayList<CashierVo> cashierVos = new ArrayList<>();
|
||||
for (Integer groupId : collectByGroupId.keySet()) {
|
||||
final CashierVo vo = new CashierVo();
|
||||
final List<Cashier> cashierList = collectByGroupId.get(groupId);
|
||||
for (Cashier cashier : cashierList) {
|
||||
if (cashier.getGroupId().equals(groupId)) {
|
||||
// 计算购物车金额
|
||||
final Integer cartNum = cashierList.stream().map(Cashier::getCartNum).reduce(Integer::sum).orElse(0);
|
||||
final Integer selectNums = cashierList.stream().filter(d -> d.getSelected().equals(true)).map(Cashier::getCartNum).reduce(Integer::sum).orElse(0);
|
||||
final BigDecimal totalPrice = cashierList.stream().filter(d -> d.getSelected().equals(true)).map(Cashier::getTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setGroupId(Long.valueOf(groupId));
|
||||
vo.setCashiers(cashierList);
|
||||
vo.setTotalPrice(totalPrice);
|
||||
vo.setTotalNums(Long.valueOf(cartNum));
|
||||
vo.setSelectNums(Long.valueOf(selectNums));
|
||||
vo.setComments("订单备注:");
|
||||
}
|
||||
}
|
||||
cashierVos.add(vo);
|
||||
}
|
||||
return cashierVos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cashier getByIdRel(Integer id) {
|
||||
CashierParam param = new CashierParam();
|
||||
param.setId(id);
|
||||
return param.getOne(baseMapper.selectListRel(param));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user