SaleDetailServiceImpl.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package vip.xiaonuo.sale.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONException;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import vip.xiaonuo.sale.entity.SaleDetail;
  10. import vip.xiaonuo.sale.entity.SaleSalesman;
  11. import vip.xiaonuo.sale.mapper.SaleDetailMapper;
  12. import vip.xiaonuo.sale.param.SaleCustomerParam;
  13. import vip.xiaonuo.sale.param.SaleDetailPageParam;
  14. import vip.xiaonuo.sale.param.SaleDetailParam;
  15. import vip.xiaonuo.sale.service.ISaleDetailService;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. import org.springframework.stereotype.Service;
  18. import java.math.BigDecimal;
  19. import java.math.RoundingMode;
  20. import java.text.DecimalFormat;
  21. import java.util.ArrayList;
  22. import java.util.Collections;
  23. import java.util.Comparator;
  24. import java.util.List;
  25. /**
  26. * <p>
  27. * 销售信息明细表 服务实现类
  28. * </p>
  29. *
  30. * @author author
  31. * @since 2024-12-13
  32. */
  33. @Service
  34. public class SaleDetailServiceImpl extends ServiceImpl<SaleDetailMapper, SaleDetail> implements ISaleDetailService {
  35. @Autowired
  36. private SaleDetailMapper detailMapper;
  37. @Override
  38. public JSONArray getList(SaleDetailParam detailParam) {
  39. String orgId = detailParam.getOrgId();
  40. String produceName = detailParam.getProduceName();
  41. QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>();
  42. queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId)
  43. .eq(StringUtils.isNotBlank(produceName), "produce_name", produceName);
  44. queryWrapper.select(" convert(IFNULL(sum(sale_money),'0'),decimal(10,2)) saleMoney,customer customer");
  45. queryWrapper.orderByDesc("sale_money");
  46. queryWrapper.groupBy("customer");
  47. List<SaleDetail> saleDetails = detailMapper.selectList(queryWrapper);
  48. JSONArray jsonArray = new JSONArray();
  49. Double count=0.00;
  50. if (saleDetails.size() != 0) {
  51. for (int i = 0; i < saleDetails.size(); i++) {
  52. if (i < 5) {
  53. JSONObject jsonObject = new JSONObject();
  54. jsonObject.put("name", saleDetails.get(i).getCustomer());
  55. jsonObject.put("value", saleDetails.get(i).getSaleMoney());
  56. jsonArray.add(jsonObject);
  57. } else {
  58. count = count + Double.valueOf(saleDetails.get(i).getSaleMoney());
  59. }
  60. }
  61. }
  62. DecimalFormat def = new DecimalFormat("0.00");
  63. JSONObject jsonObject = new JSONObject();
  64. jsonObject.put("name", "others");
  65. jsonObject.put("value", def.format(count));
  66. jsonArray.add(jsonObject);
  67. return jsonArray;
  68. }
  69. @Override
  70. public Page<SaleDetail> getList2(SaleDetailPageParam detailPageParam) {
  71. String orgId = detailPageParam.getOrgId();
  72. Page<SaleDetail> page = new Page<>(detailPageParam.getPageNum(), detailPageParam.getPageSize());
  73. QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>();
  74. queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
  75. queryWrapper.orderByDesc("create_time");
  76. return detailMapper.selectPage(page, queryWrapper);
  77. }
  78. @Override
  79. public Page<SaleDetail> listTop(SaleDetailPageParam customerParam) {
  80. Integer pageNum = customerParam.getPageNum();
  81. Integer pageSize = customerParam.getPageSize();
  82. String orgId = customerParam.getOrgId();
  83. Page<SaleDetail> page = new Page<>(pageNum, pageSize);
  84. QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>();
  85. queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
  86. queryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney,salesman salesman");
  87. queryWrapper.orderByDesc("saleMoney");
  88. queryWrapper.groupBy("salesman");
  89. Page<SaleDetail> selectPage = detailMapper.selectPage(page, queryWrapper);
  90. List<SaleDetail> saleDetails = selectPage.getRecords();
  91. BigDecimal math = new BigDecimal("10000");
  92. if (saleDetails.size() != 0) {
  93. for (int i = 0; i < saleDetails.size(); i++) {
  94. BigDecimal bg = new BigDecimal(saleDetails.get(i).getSaleMoney());
  95. saleDetails.get(i).setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
  96. saleDetails.get(i).setId(i + 1);
  97. }
  98. }
  99. return selectPage;
  100. }
  101. /*数组排序*/
  102. public static List<SaleDetail> jsonArraySort(List<SaleDetail> jsonArr, boolean is_desc) {
  103. //存放排序结果json数组
  104. List<SaleDetail> salesmanList = new ArrayList<>();
  105. //用于排序的list
  106. List<SaleDetail> list = new ArrayList<>();
  107. //将参数json数组每一项取出,放入list
  108. for (int i = 0; i <jsonArr.size() ; i++) {
  109. list.add(jsonArr.get(i));
  110. }
  111. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  112. Collections.sort(list, new Comparator<SaleDetail>() {
  113. @Override
  114. public int compare(SaleDetail o1, SaleDetail o2) {
  115. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  116. //String valA = new String();
  117. //String valB = new String();
  118. Float valA = 0.00f;
  119. Float valB = 0.00f;
  120. try {
  121. valA = Float.parseFloat(o1.getSaleMoney());
  122. valB = Float.parseFloat(o2.getSaleMoney());
  123. } catch (JSONException e) {
  124. e.printStackTrace();
  125. }
  126. //是升序还是降序
  127. if (is_desc) {
  128. return -valA.compareTo(valB);
  129. } else {
  130. return -valB.compareTo(valA);
  131. }
  132. }
  133. });
  134. //将排序后结果放入结果jsonArray
  135. for (int i = 0; i < jsonArr.size(); i++) {
  136. salesmanList.add(list.get(i));
  137. }
  138. return salesmanList;
  139. }
  140. }