package vip.xiaonuo.purchase.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.purchase.entity.PurchaseContract; import vip.xiaonuo.purchase.entity.PurchaseOrder; import vip.xiaonuo.purchase.entity.vo.PurchaseContractVo; import vip.xiaonuo.purchase.entity.vo.PurchaseOrderMoneyVo; import vip.xiaonuo.purchase.mapper.PurchaseContractMapper; import vip.xiaonuo.purchase.param.PurchaseOrderParam; import vip.xiaonuo.purchase.service.IPurchaseContractService; 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.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** *

* 采购合同 服务实现类 *

* * @author author * @since 2024-11-27 */ @Service public class PurchaseContractServiceImpl extends ServiceImpl implements IPurchaseContractService { @Autowired private PurchaseContractMapper contractMapper; @Override public List getList(PurchaseOrderParam orderParam) { String orgId = orderParam.getOrgId(); Integer number = orderParam.getNumber(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time"); queryWrapper.select(" IFNULL(sum(contract_money),'0') contractMoney,create_time createTime,IFNULL(count(*),'0') materialNumber"); BigDecimal math = new BigDecimal("10000"); List list = new ArrayList<>(); if (null == orderParam.getTimeType()||0==orderParam.getTimeType()) { Calendar calendar = Calendar.getInstance(); if (null == number) { calendar.add(Calendar.YEAR, -3); } else { calendar.add(Calendar.YEAR, -number); } queryWrapper.between("create_time", calendar.getTime(), new Date()); if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) { queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')"); } else { // queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" + "," + orderParam.getOrderType()); queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" ); } List contracts = contractMapper.selectList(queryWrapper); if (contracts.size() != 0) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); for (PurchaseContract contract : contracts) { PurchaseContractVo vo = new PurchaseContractVo(); BigDecimal bd = new BigDecimal(contract.getContractMoney()); bd = bd.divide(math, 2, RoundingMode.HALF_UP); vo.setContractMoney(bd.toString()); vo.setMaterialNumber(contract.getMaterialNumber()); vo.setTime(sdf.format(contract.getCreateTime())); list.add(vo); } } } else { // queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date())); Calendar calendar = Calendar.getInstance(); if (null == number) { calendar.add(Calendar.MONTH, -13); } else { calendar.add(Calendar.MONTH, -number); } queryWrapper.between("create_time", calendar.getTime(), new Date()); if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) { queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')"); } else { queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')"); // queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')" + "," + orderParam.getOrderType()); } List contracts = contractMapper.selectList(queryWrapper); if (contracts.size() != 0) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); for (PurchaseContract contract : contracts) { PurchaseContractVo vo = new PurchaseContractVo(); BigDecimal bd = new BigDecimal(contract.getContractMoney()); bd = bd.divide(math, 2, RoundingMode.HALF_UP); vo.setContractMoney(bd.toString()); vo.setMaterialNumber(contract.getMaterialNumber()); vo.setTime(sdf.format(contract.getCreateTime())); list.add(vo); } } } return list; } }