You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
null/SaleRecordsServiceImpl.java

121 lines
6.1 KiB

package com.rabbiter.market.service.sale_management.sale_records.impl;
import com.rabbiter.market.common.redis.service.RedisTemplateService;
import com.rabbiter.market.domain.goods_management.goods.Goods;
import com.rabbiter.market.domain.member_management.member.Member;
import com.rabbiter.market.domain.personnel_management.employee.Employee;
import com.rabbiter.market.domain.sale_management.detail_sale_records.DetailSaleRecords;
import com.rabbiter.market.domain.sale_management.sale_records.SaleRecords;
import com.rabbiter.market.mapper.sale_management.sale_records.SaleRecordsMapper;
import com.rabbiter.market.qo.sale_records.QuerySaleRecords;
import com.rabbiter.market.service.goods_management.goods.IGoodsService;
import com.rabbiter.market.service.inventory_management.store.IGoodsStoreService;
import com.rabbiter.market.service.member_management.member.IMemberService;
import com.rabbiter.market.service.sale_management.detail_sale_records.IDetailSaleRecordsService;
import com.rabbiter.market.service.sale_management.sale_records.ISaleRecordsService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.*;
@Service
public class SaleRecordsServiceImpl extends ServiceImpl<SaleRecordsMapper, SaleRecords> implements ISaleRecordsService {
@Autowired
private IGoodsService goodsService;
@Autowired
private RedisTemplateService redisTemplateService;
@Autowired
private IDetailSaleRecordsService detailSaleRecordsService;
@Autowired
private IGoodsStoreService goodsStoreService;
@Autowired
private IMemberService memberService;
@Override
public List<Map<String, Object>> getOptionSaleRecordsGoods() {
QueryWrapper<Goods> wrapper = new QueryWrapper<Goods>().gt("residue_num", 0L);
List<Goods> list = goodsService.list(wrapper);
List<Map<String, Object>> goodsList = new ArrayList<>();
if (list != null && list.size() > 0) {
for (Goods goods : list) {
Map<String, Object> map = new HashMap<>();
map.put("id", goods.getId());
map.put("name", goods.getName());
map.put("residueNum", goods.getResidueNum());
goodsList.add(map);
}
}
return goodsList;
}
@Override
public SaleRecords saveSaleRecords(SaleRecords saleRecords, String token) {
Employee employee = JSON.parseObject(redisTemplateService.getCacheObject(token), Employee.class);
saleRecords.setEid(employee.getId());
saleRecords.setSellTime(new Date());
saleRecords.setSellby(employee.getNickName());
saleRecords.setState(SaleRecords.STATE_NORMAL);
for (DetailSaleRecords detailSaleRecord : saleRecords.getDetailSaleRecords()) {
detailSaleRecord.setSellCn(saleRecords.getCn());
Goods goods = goodsService.getById(detailSaleRecord.getGoodsId());
UpdateWrapper<Goods> wrapper = new UpdateWrapper<Goods>()
.set("sales_volume", goods.getSalesVolume() != null ? goods.getSalesVolume() + detailSaleRecord.getGoodsNum() : detailSaleRecord.getGoodsNum())
.set("residue_num", goods.getResidueNum() - detailSaleRecord.getGoodsNum())
.eq("id", goods.getId());
goodsService.update(wrapper);
}
detailSaleRecordsService.saveBatch(saleRecords.getDetailSaleRecords());
super.save(saleRecords);
if ("1".equals(saleRecords.getType())) {
//为会员增加积分 积分规则:积分=总金额*5%取整
String s = saleRecords.getSellTotalmoney() * 0.05 + "";
long integral = Long.parseLong(s.split("\\.")[0]);
QueryWrapper<Member> memberQueryWrapper = new QueryWrapper<Member>().eq("phone", saleRecords.getMemberPhone());
Member member = memberService.getOne(memberQueryWrapper);
UpdateWrapper<Member> memberUpdateWrapper = new UpdateWrapper<Member>()
.set("integral", member.getIntegral() != null ? member.getIntegral() +
integral : integral)
.eq("phone", saleRecords.getMemberPhone());
memberService.update(memberUpdateWrapper);
}
return saleRecords;
}
@Override
public Page<SaleRecords> queryPageByQoSaleRecords(QuerySaleRecords qo) {
Page<SaleRecords> page = new Page<>(qo.getCurrentPage(), qo.getPageSize());
QueryWrapper<SaleRecords> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("state", SaleRecords.STATE_NORMAL);
queryWrapper.eq(StringUtils.hasText(qo.getType()), "type", qo.getType());
queryWrapper.likeRight(StringUtils.hasText(qo.getCn()), "cn", qo.getCn());
queryWrapper.ge(StringUtils.hasText(qo.getStartSellTime()), "sell_time", qo.getStartSellTime());
queryWrapper.le(StringUtils.hasText(qo.getEndSellTime()), "sell_time", qo.getEndSellTime());
queryWrapper.eq(StringUtils.hasText(qo.getSellway()), "sellway", qo.getSellway());
super.page(page, queryWrapper);
List<SaleRecords> records = page.getRecords();
if (records != null && records.size() > 0) {
for (SaleRecords record : records) {
QueryWrapper<DetailSaleRecords> sellCnWrapper = new QueryWrapper<DetailSaleRecords>().eq("sell_cn", record.getCn());
List<DetailSaleRecords> list = detailSaleRecordsService.list(sellCnWrapper);
record.setDetailSaleRecords(list);
}
}
return page;
}
@Override
public void delSaleRecords(String cn) {
UpdateWrapper<SaleRecords> wrapper = new UpdateWrapper<>();
wrapper.eq("cn", cn);
wrapper.set("state", SaleRecords.STATE_DEL);
super.update(wrapper);
}
}