|
@@ -0,0 +1,242 @@
|
|
|
+package vip.xiaonuo.money.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+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.checkerframework.checker.units.qual.A;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import vip.xiaonuo.money.entity.MoneyProduce;
|
|
|
+import vip.xiaonuo.money.entity.MoneyProduceIncome;
|
|
|
+import vip.xiaonuo.money.mapper.MoneyProduceIncomeMapper;
|
|
|
+import vip.xiaonuo.money.mapper.MoneyProduceMapper;
|
|
|
+import vip.xiaonuo.money.param.MoneyAnalysisParam;
|
|
|
+import vip.xiaonuo.money.param.MoneyInOutParam;
|
|
|
+import vip.xiaonuo.money.param.MoneyProduceIncomeParam;
|
|
|
+import vip.xiaonuo.money.param.MoneyProduceParam;
|
|
|
+import vip.xiaonuo.money.service.IMoneyProduceService;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 财务产品销售收入 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author author
|
|
|
+ * @since 2024-11-19
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class MoneyProduceServiceImpl extends ServiceImpl<MoneyProduceMapper, MoneyProduce> implements IMoneyProduceService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MoneyProduceMapper produceMapper;
|
|
|
+ @Autowired
|
|
|
+ private MoneyProduceIncomeMapper incomeMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MoneyProduce analysisIncome(MoneyAnalysisParam analysisParam) {
|
|
|
+ String orgId = analysisParam.getOrgId();
|
|
|
+ Integer type = analysisParam.getType();//是否包含关联交易
|
|
|
+ String time = analysisParam.getTime();//2024-10
|
|
|
+ QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).eq("transaction_type", type);
|
|
|
+ if ("".equals(time) || null == time) {
|
|
|
+ DateTime dateTime = DateUtil.beginOfYear(new Date());
|
|
|
+ queryWrapper.ge("create_time", dateTime);
|
|
|
+ } else {
|
|
|
+ String year = time.substring(0, 4);
|
|
|
+ queryWrapper.between("create_time", year + "-01-01 00:00:00", time + "-31 23:59:59");
|
|
|
+ }
|
|
|
+ List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
|
|
|
+ MoneyProduce produce = new MoneyProduce();
|
|
|
+ DecimalFormat def = new DecimalFormat("0.00");
|
|
|
+ double v1 = 0.00;
|
|
|
+ double v2 = 0.00;
|
|
|
+ double v3 = 0.00;
|
|
|
+ double v4 = 0.00;
|
|
|
+ double v5 = 0.00;
|
|
|
+ double v6 = 0.00;
|
|
|
+ double count = 0.00;
|
|
|
+ if (list.size() != 0) {
|
|
|
+ for (MoneyProduce moneyProduce : list) {
|
|
|
+ v1 = v1 + Double.valueOf(moneyProduce.getNfCholesterol());
|
|
|
+ v2 = v2 + Double.valueOf(moneyProduce.getBreedCholesterol());
|
|
|
+ v3 = v3 + Double.valueOf(moneyProduce.getSheepAlcohol());
|
|
|
+ v4 = v4 + Double.valueOf(moneyProduce.getSheepSour());
|
|
|
+ v5 = v5 + Double.valueOf(moneyProduce.getSheepSourBing());
|
|
|
+ v6 = v6 + Double.valueOf(moneyProduce.getOther());
|
|
|
+ count = v1 + v2 + v3 + v4 + v5 + v6;
|
|
|
+ }
|
|
|
+ if (count != 0) {
|
|
|
+ produce.setNfCholesterol(def.format(v1 / count));
|
|
|
+ produce.setBreedCholesterol(def.format(v2 / count));
|
|
|
+ produce.setSheepAlcohol(def.format(v3 / count));
|
|
|
+ produce.setSheepSour(def.format(v4 / count));
|
|
|
+ produce.setSheepSourBing(def.format(v5 / count));
|
|
|
+ produce.setOther(def.format(v6 / count));
|
|
|
+ } else {
|
|
|
+ produce.setNfCholesterol(def.format(v1));
|
|
|
+ produce.setBreedCholesterol(def.format(v2));
|
|
|
+ produce.setSheepAlcohol(def.format(v3));
|
|
|
+ produce.setSheepSour(def.format(v4));
|
|
|
+ produce.setSheepSourBing(def.format(v5));
|
|
|
+ produce.setOther(def.format(v6));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return produce;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONArray produceAnalysis(MoneyProduceParam moneyProduceParam) {
|
|
|
+ String orgId = moneyProduceParam.getOrgId();
|
|
|
+ Integer type = moneyProduceParam.getType();//是否包含关联交易
|
|
|
+ Integer timeType = moneyProduceParam.getTimeType();
|
|
|
+ QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId)
|
|
|
+ .eq("transaction_type", type);
|
|
|
+
|
|
|
+ queryWrapper.select(" IFNULL(sum(nf_cholesterol),0) nfCholesterol,IFNULL(sum(breed_cholesterol),0) breedCholesterol," +
|
|
|
+ "IFNULL(sum(sheep_alcohol),0) sheepAlcohol,IFNULL(sum(sheep_sour),0) sheepSour," +
|
|
|
+ "IFNULL(sum(sheep_sour_bing),0) sheepSourBing,IFNULL(sum(other),0) other," +
|
|
|
+ "DATE_FORMAT(create_time,'%Y-%m-%d') createTime");
|
|
|
+ if (0 == timeType) {
|
|
|
+ queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')").orderByAsc("create_time");
|
|
|
+ } else {
|
|
|
+ queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')").orderByAsc("create_time");
|
|
|
+ }
|
|
|
+ List<MoneyProduce> list = produceMapper.selectList(queryWrapper);
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ for (MoneyProduce produce : list) {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ switch (moneyProduceParam.getPType()) {
|
|
|
+ case 0:
|
|
|
+ jsonObject.put("value", produce.getNfCholesterol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ jsonObject.put("value", produce.getBreedCholesterol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ jsonObject.put("value", produce.getSheepAlcohol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ jsonObject.put("value", produce.getSheepSour());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ jsonObject.put("value", produce.getSheepSourBing());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ jsonObject.put("value", produce.getOther());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ jsonArray.add(jsonObject);
|
|
|
+ }
|
|
|
+ return jsonArray;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject getInOut(MoneyInOutParam inOutParam) {
|
|
|
+ String orgId = inOutParam.getOrgId();
|
|
|
+ QueryWrapper<MoneyProduce> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).groupBy("type");
|
|
|
+ List<MoneyProduce> produces = produceMapper.selectList(queryWrapper);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ DecimalFormat def = new DecimalFormat("0.00");
|
|
|
+ double in = 0.00;
|
|
|
+ double out = 0.00;
|
|
|
+ double count = 0.00;
|
|
|
+ if (produces.size() != 0) {
|
|
|
+ for (MoneyProduce produce : produces) {
|
|
|
+ if (produce.getType() == 0) {
|
|
|
+ in = in + Double.valueOf(produce.getNfCholesterol()) + Double.valueOf(produce.getBreedCholesterol())
|
|
|
+ + Double.valueOf(produce.getSheepAlcohol())
|
|
|
+ + Double.valueOf(produce.getSheepSour())
|
|
|
+ + Double.valueOf(produce.getSheepSourBing())
|
|
|
+ + Double.valueOf(produce.getOther());
|
|
|
+ } else {
|
|
|
+ out = out + Double.valueOf(produce.getNfCholesterol()) + Double.valueOf(produce.getBreedCholesterol())
|
|
|
+ + Double.valueOf(produce.getSheepAlcohol())
|
|
|
+ + Double.valueOf(produce.getSheepSour())
|
|
|
+ + Double.valueOf(produce.getSheepSourBing())
|
|
|
+ + Double.valueOf(produce.getOther());
|
|
|
+ }
|
|
|
+ count = count+in + out;
|
|
|
+ }
|
|
|
+ if (count != 0) {
|
|
|
+ in = in / count;
|
|
|
+ out = out / count;
|
|
|
+ } else {
|
|
|
+ in = 0.00;
|
|
|
+ out = 0.00;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ jsonObject.put("in", def.format(in));
|
|
|
+ jsonObject.put("out", def.format(out));
|
|
|
+ return jsonObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONArray produceIncomeAnalysis(MoneyProduceIncomeParam moneyProduceParam) {
|
|
|
+ String orgId = moneyProduceParam.getOrgId();
|
|
|
+ Integer timeType = moneyProduceParam.getTimeType();
|
|
|
+ QueryWrapper<MoneyProduceIncome> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
+
|
|
|
+ queryWrapper.select(" IFNULL(sum(nf_cholesterol),0) nfCholesterol,IFNULL(sum(breed_cholesterol),0) breedCholesterol," +
|
|
|
+ "IFNULL(sum(sheep_alcohol),0) sheepAlcohol,IFNULL(sum(sheep_sour),0) sheepSour," +
|
|
|
+ "IFNULL(sum(sheep_sour_bing),0) sheepSourBing,IFNULL(sum(other),0) other," +
|
|
|
+ "DATE_FORMAT(create_time,'%Y-%m-%d') createTime");
|
|
|
+ if (0 == timeType) {
|
|
|
+ queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')").orderByAsc("create_time");
|
|
|
+ } else {
|
|
|
+ queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')").orderByAsc("create_time");
|
|
|
+ }
|
|
|
+ List<MoneyProduceIncome> list = incomeMapper.selectList(queryWrapper);
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ for (MoneyProduceIncome produce : list) {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ switch (moneyProduceParam.getPType()) {
|
|
|
+ case 0:
|
|
|
+ jsonObject.put("value", produce.getNfCholesterol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ jsonObject.put("value", produce.getBreedCholesterol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ jsonObject.put("value", produce.getSheepAlcohol());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ jsonObject.put("value", produce.getSheepSour());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ jsonObject.put("value", produce.getSheepSourBing());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ jsonObject.put("value", produce.getOther());
|
|
|
+ jsonObject.put("createTime", produce.getCreateTime());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ jsonArray.add(jsonObject);
|
|
|
+ }
|
|
|
+ return jsonArray;
|
|
|
+ }
|
|
|
+}
|