package vip.xiaonuo.sale.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; import vip.xiaonuo.sale.entity.SaleDetail; import vip.xiaonuo.sale.entity.SaleSalesman; import vip.xiaonuo.sale.mapper.SaleDetailMapper; import vip.xiaonuo.sale.param.SaleCustomerParam; import vip.xiaonuo.sale.param.SaleDetailPageParam; import vip.xiaonuo.sale.param.SaleDetailParam; import vip.xiaonuo.sale.service.ISaleDetailService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** *

* 销售信息明细表 服务实现类 *

* * @author author * @since 2024-12-13 */ @Service public class SaleDetailServiceImpl extends ServiceImpl implements ISaleDetailService { @Autowired private SaleDetailMapper detailMapper; @Override public JSONArray getList(SaleDetailParam detailParam) { String orgId = detailParam.getOrgId(); String produceName = detailParam.getProduceName(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId) .eq(StringUtils.isNotBlank(produceName), "produce_name", produceName); queryWrapper.select(" convert(IFNULL(sum(sale_money),'0'),decimal(10,2)) saleMoney,customer customer"); queryWrapper.orderByDesc("sale_money"); queryWrapper.groupBy("customer"); List saleDetails = detailMapper.selectList(queryWrapper); JSONArray jsonArray = new JSONArray(); Double count=0.00; if (saleDetails.size() != 0) { for (int i = 0; i < saleDetails.size(); i++) { if (i < 5) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", saleDetails.get(i).getCustomer()); jsonObject.put("value", saleDetails.get(i).getSaleMoney()); jsonArray.add(jsonObject); } else { count = count + Double.valueOf(saleDetails.get(i).getSaleMoney()); } } } DecimalFormat def = new DecimalFormat("0.00"); JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "others"); jsonObject.put("value", def.format(count)); jsonArray.add(jsonObject); return jsonArray; } @Override public Page getList2(SaleDetailPageParam detailPageParam) { String orgId = detailPageParam.getOrgId(); Page page = new Page<>(detailPageParam.getPageNum(), detailPageParam.getPageSize()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId); queryWrapper.orderByDesc("create_time"); return detailMapper.selectPage(page, queryWrapper); } @Override public Page listTop(SaleDetailPageParam customerParam) { Integer pageNum = customerParam.getPageNum(); Integer pageSize = customerParam.getPageSize(); String orgId = customerParam.getOrgId(); Page page = new Page<>(pageNum, pageSize); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId); queryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney,salesman salesman"); queryWrapper.orderByDesc("saleMoney"); queryWrapper.groupBy("salesman"); Page selectPage = detailMapper.selectPage(page, queryWrapper); List saleDetails = selectPage.getRecords(); BigDecimal math = new BigDecimal("10000"); if (saleDetails.size() != 0) { for (int i = 0; i < saleDetails.size(); i++) { BigDecimal bg = new BigDecimal(saleDetails.get(i).getSaleMoney()); saleDetails.get(i).setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString()); saleDetails.get(i).setId(i + 1); } } return selectPage; } /*数组排序*/ public static List jsonArraySort(List jsonArr, boolean is_desc) { //存放排序结果json数组 List salesmanList = new ArrayList<>(); //用于排序的list List list = new ArrayList<>(); //将参数json数组每一项取出,放入list for (int i = 0; i () { @Override public int compare(SaleDetail o1, SaleDetail o2) { //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接 //String valA = new String(); //String valB = new String(); Float valA = 0.00f; Float valB = 0.00f; try { valA = Float.parseFloat(o1.getSaleMoney()); valB = Float.parseFloat(o2.getSaleMoney()); } catch (JSONException e) { e.printStackTrace(); } //是升序还是降序 if (is_desc) { return -valA.compareTo(valB); } else { return -valB.compareTo(valA); } } }); //将排序后结果放入结果jsonArray for (int i = 0; i < jsonArr.size(); i++) { salesmanList.add(list.get(i)); } return salesmanList; } }