123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package vip.xiaonuo.sale.service.impl;
- import cn.hutool.core.date.DateUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- 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.sale.entity.ErpBaseMaterial;
- import vip.xiaonuo.sale.entity.SaleProduce;
- import vip.xiaonuo.sale.mapper.ErpBaseMaterialMapper;
- import vip.xiaonuo.sale.mapper.SaleProduceMapper;
- import vip.xiaonuo.sale.param.SaleProduceParam;
- import vip.xiaonuo.sale.service.ISaleProduceService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.springframework.stereotype.Service;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.time.LocalDate;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- /**
- * <p>
- * 销售二级指标 服务实现类
- * </p>
- *
- * @author author
- * @since 2024-12-13
- */
- @Service
- public class SaleProduceServiceImpl extends ServiceImpl<SaleProduceMapper, SaleProduce> implements ISaleProduceService {
- @Autowired
- private SaleProduceMapper produceMapper;
- @Autowired
- private ErpBaseMaterialMapper materialMapper;
- @Override
- public JSONObject getProduceOne(SaleProduceParam produceParam) {
- Integer parentId = produceParam.getParentId();
- String time = produceParam.getDate();
- String year = time.substring(0, 4);
- QueryWrapper<ErpBaseMaterial> materialQueryWrapper = new QueryWrapper<>();
- materialQueryWrapper.eq("parent_id", parentId);
- List<ErpBaseMaterial> materials = materialMapper.selectList(materialQueryWrapper);
- Double monthSaleMoney = 0.00;
- Double yearSaleMoney = 0.00;
- Double monthPrice = 0.00;
- Double yearPrice = 0.00;
- if (materials.size() != 0) {
- for (ErpBaseMaterial material : materials) {
- QueryWrapper<SaleProduce> queryWrapper = new QueryWrapper<>();
- queryWrapper.like("produce_name", material.getMaterialName());
- queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
- queryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney,convert(IFNULL(avg(price),'0'),decimal(10,2))");
- SaleProduce monthProduce = produceMapper.selectOne(queryWrapper);
- QueryWrapper<SaleProduce> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.like("produce_name", material.getMaterialName());
- queryWrapper1.between("create_time", year + "-01-01 00:00:00", year + "-12-31 23:59:59");
- queryWrapper1.select(" IFNULL(sum(sale_money),'0') saleMoney,convert(IFNULL(avg(price),'0'),decimal(10,2))");
- SaleProduce yearProduce = produceMapper.selectOne(queryWrapper1);
- monthSaleMoney = monthSaleMoney + Double.valueOf(monthProduce.getSaleMoney());
- yearSaleMoney = yearSaleMoney + Double.valueOf(yearProduce.getSaleMoney());
- monthPrice = monthPrice + Double.valueOf(monthProduce.getPrice());
- yearPrice = yearPrice + Double.valueOf(yearProduce.getPrice());
- }
- }
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("monthSaleMoney", monthSaleMoney);
- jsonObject.put("yearSaleMoney",yearSaleMoney);
- DecimalFormat def = new DecimalFormat("0.00");
- if (materials.size() != 0) {
- double v = monthPrice / materials.size();
- double v1 = yearPrice / materials.size();
- jsonObject.put("monthPrice", def.format(v));
- jsonObject.put("yearPrice", v1);
- } else {
- jsonObject.put("monthPrice", "0");
- jsonObject.put("yearPrice", "0");
- }
- return jsonObject;
- }
- @Override
- public JSONArray getPriceList(SaleProduceParam produceParam) {
- Integer parentId = produceParam.getParentId();
- String time = produceParam.getDate();
- String year = time.substring(0, 4);
- QueryWrapper<ErpBaseMaterial> materialQueryWrapper = new QueryWrapper<>();
- materialQueryWrapper.eq("parent_id", parentId);
- List<ErpBaseMaterial> materials = materialMapper.selectList(materialQueryWrapper);
- List<SaleProduce> yearList = new ArrayList<>();
- List<SaleProduce> lastYearList = new ArrayList<>();
- if (materials.size() != 0) {
- for (ErpBaseMaterial material : materials) {
- QueryWrapper<SaleProduce> queryWrapper = new QueryWrapper<>();
- queryWrapper.like("produce_name", material.getMaterialName());
- queryWrapper.between("create_time", year + "-01 00:00:00", year + "-31 23:59:59");
- queryWrapper.select(" sum(sale_money) saleMoney,create_time createTime");
- queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
- SaleProduce lastProduce = produceMapper.selectOne(queryWrapper);
- lastYearList.add(lastProduce);
- QueryWrapper<SaleProduce> queryWrapper1 = new QueryWrapper<>();
- queryWrapper1.like("produce_name", material.getMaterialName());
- queryWrapper1.between("create_time", Integer.parseInt(year)-1 + "-01-01 00:00:00", Integer.parseInt(year)-1 + "-12-31 23:59:59");
- queryWrapper1.select(" sum(sale_money) saleMoney,create_time createTime");
- queryWrapper1.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
- SaleProduce yearProduce = produceMapper.selectOne(queryWrapper1);
- yearList.add(yearProduce);
- }
- }
- SimpleDateFormat sdf = new SimpleDateFormat("MM");
- JSONArray jsonArray = new JSONArray();
- for (int i = 1; i < 13; i++) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("time", i + "月");
- jsonObject.put("year", "0");
- jsonObject.put("lastYear", "0");
- if (yearList.size() != 0) {
- for (SaleProduce produce : yearList) {
- String format = sdf.format(produce.getCreateTime());
- if (i == Integer.parseInt(format)) {
- jsonObject.put("year", produce.getSaleMoney());
- }
- }
- } else {
- jsonObject.put("year", "0");
- }
- if (lastYearList.size() != 0) {
- for (SaleProduce produce : lastYearList) {
- String format = sdf.format(produce.getCreateTime());
- if (i == Integer.parseInt(format)) {
- jsonObject.put("lastYear", produce.getSaleMoney());
- }
- }
- } else {
- jsonObject.put("lastYear", "0");
- }
- jsonArray.add(jsonObject);
- }
- return jsonArray;
- }
- }
|