package vip.xiaonuo.risk.service.impl;
import cn.hutool.core.date.DateTime;
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.risk.entity.RiskSale;
import vip.xiaonuo.risk.mapper.RiskSaleMapper;
import vip.xiaonuo.risk.param.RiskSaleParam;
import vip.xiaonuo.risk.service.IRiskSaleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import vip.xiaonuo.sale.entity.SaleDetail;
import vip.xiaonuo.sale.mapper.SaleDetailMapper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 风控销售回款 服务实现类
*
*
* @author author
* @since 2024-12-09
*/
@Service
public class RiskSaleServiceImpl extends ServiceImpl implements IRiskSaleService {
@Autowired
private RiskSaleMapper saleMapper;
@Autowired
private SaleDetailMapper saleDetailMapper;
@Override
public List getList(RiskSaleParam riskSaleParam) {
String orgId = riskSaleParam.getOrgId();
Integer timeType = riskSaleParam.getTimeType();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
queryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney,create_time createTime");
if (1 == timeType) {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
} else {
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
}
queryWrapper.orderByAsc("create_time");
List saleDetails = saleDetailMapper.selectList(queryWrapper);
List list = new ArrayList<>();
BigDecimal math = new BigDecimal("10000");
if (saleDetails.size() != 0) {
for (SaleDetail saleDetail : saleDetails) {
RiskSale riskSale = new RiskSale();
BigDecimal bg = new BigDecimal(saleDetail.getSaleMoney());
riskSale.setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
riskSale.setBackMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
riskSale.setCreateTime(saleDetail.getCreateTime());
list.add(riskSale);
}
}
return list;
}
}