PurchasePriceServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package vip.xiaonuo.purchase.service.impl;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import vip.xiaonuo.purchase.entity.PurchasePrice;
  7. import vip.xiaonuo.purchase.entity.vo.PurchasePriceVo;
  8. import vip.xiaonuo.purchase.mapper.PurchasePriceMapper;
  9. import vip.xiaonuo.purchase.param.PurchasePriceParam;
  10. import vip.xiaonuo.purchase.service.IPurchasePriceService;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import org.springframework.stereotype.Service;
  13. import java.text.SimpleDateFormat;
  14. import java.util.ArrayList;
  15. import java.util.Calendar;
  16. import java.util.Date;
  17. import java.util.List;
  18. /**
  19. * <p>
  20. * 采购单品价格表 服务实现类
  21. * </p>
  22. *
  23. * @author author
  24. * @since 2024-11-27
  25. */
  26. @Service
  27. public class PurchasePriceServiceImpl extends ServiceImpl<PurchasePriceMapper, PurchasePrice> implements IPurchasePriceService {
  28. @Autowired
  29. private PurchasePriceMapper priceMapper;
  30. @Override
  31. public List<PurchasePriceVo> getList(PurchasePriceParam priceParam) {
  32. QueryWrapper<PurchasePrice> queryWrapper = new QueryWrapper<>();
  33. queryWrapper.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
  34. queryWrapper.eq(StringUtils.isNotBlank(priceParam.getMaterial()), "material", priceParam.getMaterial());
  35. queryWrapper.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price',create_time createTime");
  36. Integer timeType = priceParam.getTimeType();
  37. List<PurchasePriceVo> list = new ArrayList<>();
  38. if (null == timeType || 0 == timeType) {
  39. if ("".equals(priceParam.getMaterial()) || null == priceParam.getMaterial()) {
  40. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
  41. } else {
  42. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" );
  43. // queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" + "," + priceParam.getMaterial());
  44. }
  45. List<PurchasePrice> prices = priceMapper.selectList(queryWrapper);
  46. if (prices.size() != 0) {
  47. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  48. for (PurchasePrice price : prices) {
  49. PurchasePriceVo vo = new PurchasePriceVo();
  50. vo.setAvgPrice(price.getPrice());
  51. vo.setTime(sdf.format(price.getCreateTime()));
  52. list.add(vo);
  53. }
  54. }
  55. } else {
  56. queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
  57. if ("".equals(priceParam.getMaterial()) || null == priceParam.getMaterial()) {
  58. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
  59. } else {
  60. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
  61. }
  62. QueryWrapper<PurchasePrice> queryWrapper1 = new QueryWrapper<>();
  63. queryWrapper1.eq(StringUtils.isNotBlank(priceParam.getOrgId()), "org_id", priceParam.getOrgId());
  64. queryWrapper1.select(" CONVERT(IFNULL(avg(price),'0'),decimal(10,2)) 'price'");
  65. Calendar calendar = Calendar.getInstance();
  66. calendar.add(Calendar.YEAR, -1);
  67. int lastYear = calendar.get(Calendar.YEAR);
  68. queryWrapper1.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
  69. PurchasePrice purchasePrice = priceMapper.selectOne(queryWrapper1);
  70. List<PurchasePrice> prices = priceMapper.selectList(queryWrapper);
  71. if (prices.size() != 0) {
  72. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  73. for (PurchasePrice price : prices) {
  74. PurchasePriceVo vo = new PurchasePriceVo();
  75. vo.setAvgPrice(price.getPrice());
  76. vo.setLastAvgPrice(purchasePrice.getPrice());
  77. vo.setTime(sdf.format(price.getCreateTime()));
  78. list.add(vo);
  79. }
  80. }
  81. }
  82. return list;
  83. }
  84. }