package vip.xiaonuo.sale.service.impl;
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.SaleOrder;
import vip.xiaonuo.sale.entity.SalePrice;
import vip.xiaonuo.sale.entity.vo.SaleDeliverVo;
import vip.xiaonuo.sale.mapper.SaleDetailMapper;
import vip.xiaonuo.sale.mapper.SaleOrderMapper;
import vip.xiaonuo.sale.param.SaleOrderParam;
import vip.xiaonuo.sale.service.ISaleOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
*
* 销售订单 服务实现类
*
*
* @author author
* @since 2024-12-13
*/
@Service
public class SaleOrderServiceImpl extends ServiceImpl implements ISaleOrderService {
@Autowired
private SaleOrderMapper orderMapper;
@Override
public List getList(SaleOrderParam saleOrderParam) {
String orgId = saleOrderParam.getOrgId();
String customer = saleOrderParam.getCustomer();
String materialName = saleOrderParam.getMaterialName();
Integer timeType = saleOrderParam.getTimeType();
QueryWrapper queryWrapper = new QueryWrapper<>();
Integer number = saleOrderParam.getNumber();
queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
queryWrapper.eq(StringUtils.isNotBlank(customer),"customer",customer);
queryWrapper.eq(StringUtils.isNotBlank(materialName),"produce_name",materialName);
queryWrapper.select(" CONVERT(IFNULL(sum(sale_number),'0'),decimal(10,2)) saleNumber,create_time createTime,IFNULL(sum(sale_money),'0') saleMoney");
if (0 == timeType) {
Calendar calendar = Calendar.getInstance();
if (null == number) {
calendar.add(Calendar.YEAR, -2);
} else {
calendar.add(Calendar.YEAR, -number+1);
}
queryWrapper.between("create_time", calendar.getTime(), new Date());
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
} else {
Calendar calendar = Calendar.getInstance();
if (null == number) {
calendar.add(Calendar.MONTH, -12);
} else {
calendar.add(Calendar.MONTH, -number+1);
}
queryWrapper.between("create_time", calendar.getTime(), new Date());
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
}
queryWrapper.orderByAsc("create_time");
List saleOrders = orderMapper.selectList(queryWrapper);
BigDecimal math = new BigDecimal("10000");
for (SaleOrder saleOrder : saleOrders) {
BigDecimal bg = new BigDecimal(saleOrder.getSaleMoney());
saleOrder.setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
}
return saleOrders;
}
@Autowired
private SaleDetailMapper saleDetailMapper;
@Override
public Page saleOrderWeiFa(Page objectPage, QueryWrapper wapper) {
QueryWrapper contrNoQueryWrapper = new QueryWrapper<>();
contrNoQueryWrapper.isNull("c.sorr_derno");
Page page = saleDetailMapper.selectSumMoneyNoTwo(objectPage,contrNoQueryWrapper);
return page;
}
}