package vip.xiaonuo.purchase.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import vip.xiaonuo.purchase.entity.PurchasePrice;
import vip.xiaonuo.purchase.entity.vo.PurchasePriceVo;
import vip.xiaonuo.purchase.mapper.PurchasePriceMapper;
import vip.xiaonuo.purchase.param.PurchasePriceParam;
import vip.xiaonuo.purchase.service.IPurchasePriceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
*
* 采购单品价格表 服务实现类
*
*
* @author author
* @since 2024-11-27
*/
@Service
public class PurchasePriceServiceImpl extends ServiceImpl implements IPurchasePriceService {
@Autowired
private PurchasePriceMapper priceMapper;
@Override
public List getList(PurchasePriceParam priceParam) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
queryWrapper.eq(StringUtils.isNotBlank(priceParam.getMaterial()), "material", priceParam.getMaterial());
queryWrapper.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price',create_time createTime");
Integer timeType = priceParam.getTimeType();
List list = new ArrayList<>();
if (null == timeType || 0 == timeType) {
if ("".equals(priceParam.getMaterial()) || null == priceParam.getMaterial()) {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
} else {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" );
// queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" + "," + priceParam.getMaterial());
}
List prices = priceMapper.selectList(queryWrapper);
if (prices.size() != 0) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
for (PurchasePrice price : prices) {
PurchasePriceVo vo = new PurchasePriceVo();
vo.setAvgPrice(price.getPrice());
vo.setTime(sdf.format(price.getCreateTime()));
list.add(vo);
}
}
} else {
queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
if ("".equals(priceParam.getMaterial()) || null == priceParam.getMaterial()) {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
} else {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
}
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
queryWrapper1.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price'");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -1);
int lastYear = calendar.get(Calendar.YEAR);
queryWrapper1.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
PurchasePrice purchasePrice = priceMapper.selectOne(queryWrapper1);
List prices = priceMapper.selectList(queryWrapper);
if (prices.size() != 0) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
for (PurchasePrice price : prices) {
PurchasePriceVo vo = new PurchasePriceVo();
vo.setAvgPrice(price.getPrice());
vo.setLastAvgPrice(purchasePrice.getPrice());
vo.setTime(sdf.format(price.getCreateTime()));
list.add(vo);
}
}
}
return list;
}
}