|
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import vip.xiaonuo.money.entity.MoneyWriteOverdue;
|
|
|
|
+import vip.xiaonuo.money.mapper.MoneyWriteOverdueMapper;
|
|
import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
|
|
import vip.xiaonuo.production.entity.ProductionWorkstopPlan;
|
|
import vip.xiaonuo.sale.entity.*;
|
|
import vip.xiaonuo.sale.entity.*;
|
|
import vip.xiaonuo.sale.entity.vo.SaleTargetDetailVo;
|
|
import vip.xiaonuo.sale.entity.vo.SaleTargetDetailVo;
|
|
@@ -51,6 +53,8 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
private SaleReceiveMapper receiveMapper;
|
|
private SaleReceiveMapper receiveMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private SaleDetailMapper saleDetailMapper;
|
|
private SaleDetailMapper saleDetailMapper;
|
|
|
|
+ @Autowired
|
|
|
|
+ private MoneyWriteOverdueMapper writeOverdueMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public JSONArray getTarget(SaleParam saleParam) {
|
|
public JSONArray getTarget(SaleParam saleParam) {
|
|
@@ -167,12 +171,27 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
|
|
queryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
|
|
queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
SaleTarget monthTarget = targetMapper.selectOne(queryWrapper);
|
|
SaleTarget monthTarget = targetMapper.selectOne(queryWrapper);
|
|
|
|
+
|
|
|
|
+ queryWrapper.clear();
|
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ queryWrapper.between("create_time", year + "-01-01 00:00:00", year + "-12-31 23:59:59");
|
|
|
|
+ queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
|
|
+ SaleTarget yearTarget = targetMapper.selectOne(queryWrapper);
|
|
|
|
+
|
|
|
|
+ queryWrapper.clear();
|
|
|
|
+ queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ queryWrapper.between("create_time", lastYear + "-01-01 00:00:00", lastYear + "-12-31 23:59:59");
|
|
|
|
+ queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
|
|
+ SaleTarget lastYearTarget = targetMapper.selectOne(queryWrapper);
|
|
|
|
+ vo.setYearVisitNumRate(calculateYOYChange(Double.parseDouble(yearTarget.getVisitNumber()),Double.parseDouble(lastYearTarget.getVisitNumber())));
|
|
|
|
+
|
|
queryWrapper.clear();
|
|
queryWrapper.clear();
|
|
queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
queryWrapper.between("create_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
|
|
queryWrapper.between("create_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
|
|
queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
queryWrapper.select(" IFNULL(sum(visit_number),'0') visitNumber");
|
|
SaleTarget lastMonthTarget = targetMapper.selectOne(queryWrapper);
|
|
SaleTarget lastMonthTarget = targetMapper.selectOne(queryWrapper);
|
|
|
|
|
|
|
|
+
|
|
//销售合同金额
|
|
//销售合同金额
|
|
QueryWrapper<SaleOrder> orderQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SaleOrder> orderQueryWrapper = new QueryWrapper<>();
|
|
orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
@@ -185,6 +204,19 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
|
|
orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
|
|
SaleOrder yearOrder = orderMapper.selectOne(orderQueryWrapper);
|
|
SaleOrder yearOrder = orderMapper.selectOne(orderQueryWrapper);
|
|
|
|
|
|
|
|
+
|
|
|
|
+ orderQueryWrapper.clear();
|
|
|
|
+ orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ orderQueryWrapper.between("create_time", year+"-01-01 00:00:00", year+ "-12-31 23:59:59");
|
|
|
|
+ orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
|
|
|
|
+ SaleOrder orderYear = orderMapper.selectOne(orderQueryWrapper);
|
|
|
|
+ orderQueryWrapper.clear();
|
|
|
|
+ orderQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ orderQueryWrapper.between("create_time", lastYear+"-01-01 00:00:00", lastYear+ "-12-31 23:59:59");
|
|
|
|
+ orderQueryWrapper.select(" IFNULL(sum(sale_money),'0') saleMoney");
|
|
|
|
+ SaleOrder lastOrderYear = orderMapper.selectOne(orderQueryWrapper);
|
|
|
|
+ vo.setYearSaleMoneyRate(calculateYOYChange(Double.parseDouble(yearOrder.getSaleMoney()),Double.parseDouble(lastOrderYear.getSaleMoney())));
|
|
|
|
+
|
|
//销售发货金额
|
|
//销售发货金额
|
|
QueryWrapper<SaleDeliver> deliverQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<SaleDeliver> deliverQueryWrapper = new QueryWrapper<>();
|
|
deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
@@ -197,17 +229,32 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
|
|
deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
|
|
SaleDeliver yearDeliver = deliverMapper.selectOne(deliverQueryWrapper);
|
|
SaleDeliver yearDeliver = deliverMapper.selectOne(deliverQueryWrapper);
|
|
|
|
|
|
- //预期应收款金额
|
|
|
|
- QueryWrapper<SaleReceive> saleReceiveQueryWrapper = new QueryWrapper<>();
|
|
|
|
|
|
+ deliverQueryWrapper.clear();
|
|
|
|
+ deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ deliverQueryWrapper.between("create_time", year+"-01-01 00:00:00", year+"-12-31 23:59:59");
|
|
|
|
+ deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
|
|
|
|
+ SaleDeliver deliverYear = deliverMapper.selectOne(deliverQueryWrapper);
|
|
|
|
+
|
|
|
|
+ deliverQueryWrapper.clear();
|
|
|
|
+ deliverQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
|
|
+ deliverQueryWrapper.between("create_time", lastYear+"-01-01 00:00:00", lastYear+"-12-31 23:59:59");
|
|
|
|
+ deliverQueryWrapper.select(" IFNULL(sum(sale_deliver_money),'0') saleDeliverMoney");
|
|
|
|
+ SaleDeliver lastDeliverYear = deliverMapper.selectOne(deliverQueryWrapper);
|
|
|
|
+
|
|
|
|
+ vo.setYearSaleDeliverMoneyRate(calculateYOYChange(Double.parseDouble(yearDeliver.getSaleDeliverMoney()),Double.parseDouble(lastDeliverYear.getSaleDeliverMoney())));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //逾期应收款金额
|
|
|
|
+ QueryWrapper<MoneyWriteOverdue> saleReceiveQueryWrapper = new QueryWrapper<>();
|
|
saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
- saleReceiveQueryWrapper.between("create_time", time + "-01 00:00:00", time + "-31 23:59:59");
|
|
|
|
- saleReceiveQueryWrapper.select(" IFNULL(sum(receive_money),'0') receiveMoney");
|
|
|
|
- SaleReceive monthReceive = receiveMapper.selectOne(saleReceiveQueryWrapper);
|
|
|
|
|
|
+ saleReceiveQueryWrapper.between("end_time", time + "-01 00:00:00", time + "-31 23:59:59");
|
|
|
|
+ saleReceiveQueryWrapper.select(" IFNULL(sum(rmbje),'0') rmbje");
|
|
|
|
+ MoneyWriteOverdue monthReceive = writeOverdueMapper.selectOne(saleReceiveQueryWrapper);
|
|
saleReceiveQueryWrapper.clear();
|
|
saleReceiveQueryWrapper.clear();
|
|
saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
saleReceiveQueryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId);
|
|
- saleReceiveQueryWrapper.between("create_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
|
|
|
|
- saleReceiveQueryWrapper.select(" IFNULL(sum(receive_money),'0') receiveMoney");
|
|
|
|
- SaleReceive yearReceive = receiveMapper.selectOne(saleReceiveQueryWrapper);
|
|
|
|
|
|
+ saleReceiveQueryWrapper.between("end_time", lastYear+"-"+month + "-01 00:00:00", lastYear+"-"+month + "-31 23:59:59");
|
|
|
|
+ saleReceiveQueryWrapper.select(" IFNULL(sum(rmbje),'0') rmbje");
|
|
|
|
+ MoneyWriteOverdue yearReceive = writeOverdueMapper.selectOne(saleReceiveQueryWrapper);
|
|
|
|
|
|
DecimalFormat def = new DecimalFormat("0.00");
|
|
DecimalFormat def = new DecimalFormat("0.00");
|
|
BigDecimal math = new BigDecimal("10000");
|
|
BigDecimal math = new BigDecimal("10000");
|
|
@@ -223,20 +270,21 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
}
|
|
}
|
|
}
|
|
}
|
|
vo.setVisitNum(monthTarget.getVisitNumber());
|
|
vo.setVisitNum(monthTarget.getVisitNumber());
|
|
- vo.setComplete("0");
|
|
|
|
- vo.setCompleteRate("0");
|
|
|
|
|
|
+ vo.setVisitNumYear(yearTarget.getVisitNumber());
|
|
|
|
+ vo.setComplete("100");
|
|
|
|
+ vo.setCompleteRate("100");
|
|
|
|
+ vo.setYearCompleteRate("100");
|
|
|
|
+ vo.setCompleteYear("100");
|
|
if (yearOrder.getSaleMoney().equals("0")) {
|
|
if (yearOrder.getSaleMoney().equals("0")) {
|
|
vo.setSaleMoneyRate("0");
|
|
vo.setSaleMoneyRate("0");
|
|
} else {
|
|
} else {
|
|
double v = (Double.valueOf(monthOrder.getSaleMoney()) - Double.valueOf(yearOrder.getSaleMoney()))/Double.valueOf(yearOrder.getSaleMoney());
|
|
double v = (Double.valueOf(monthOrder.getSaleMoney()) - Double.valueOf(yearOrder.getSaleMoney()))/Double.valueOf(yearOrder.getSaleMoney());
|
|
- if (v >= 1.0) {
|
|
|
|
- vo.setSaleMoneyRate("100");
|
|
|
|
- } else {
|
|
|
|
- vo.setSaleMoneyRate(def.format(v * 100));
|
|
|
|
- }
|
|
|
|
|
|
+ vo.setSaleMoneyRate(def.format(v * 100));
|
|
}
|
|
}
|
|
BigDecimal bg = new BigDecimal(monthOrder.getSaleMoney());
|
|
BigDecimal bg = new BigDecimal(monthOrder.getSaleMoney());
|
|
|
|
+ BigDecimal bg1 = new BigDecimal(orderYear.getSaleMoney());
|
|
vo.setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
vo.setSaleMoney(bg.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
|
|
+ vo.setSaleMoneyYear(bg1.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
|
|
|
|
if (yearDeliver.getSaleDeliverMoney().equals("0")) {
|
|
if (yearDeliver.getSaleDeliverMoney().equals("0")) {
|
|
vo.setSaleDeliverMoneyRate("0");
|
|
vo.setSaleDeliverMoneyRate("0");
|
|
@@ -251,22 +299,40 @@ public class SaleTargetServiceImpl extends ServiceImpl<SaleTargetMapper, SaleTar
|
|
BigDecimal bg2 = new BigDecimal(monthDeliver.getSaleDeliverMoney());
|
|
BigDecimal bg2 = new BigDecimal(monthDeliver.getSaleDeliverMoney());
|
|
vo.setSaleDeliverMoney(bg2.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
vo.setSaleDeliverMoney(bg2.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
|
|
|
|
- if (yearReceive.getReceiveMoney().equals("0")) {
|
|
|
|
|
|
+ BigDecimal bg4 = new BigDecimal(deliverYear.getSaleDeliverMoney());
|
|
|
|
+ vo.setSaleDeliverMoneyYear(bg4.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
|
|
+
|
|
|
|
+ if (yearReceive.getRmbje().equals("0")) {
|
|
vo.setReceiveMoneyRate("0");
|
|
vo.setReceiveMoneyRate("0");
|
|
} else {
|
|
} else {
|
|
- double v = (Double.valueOf(monthReceive.getReceiveMoney()) - Double.valueOf(yearReceive.getReceiveMoney()))/Double.valueOf(yearReceive.getReceiveMoney());
|
|
|
|
|
|
+ double v = (Double.valueOf(monthReceive.getRmbje()) - Double.valueOf(yearReceive.getRmbje()))/Double.valueOf(yearReceive.getRmbje());
|
|
if (v >= 1.0) {
|
|
if (v >= 1.0) {
|
|
vo.setReceiveMoneyRate("100");
|
|
vo.setReceiveMoneyRate("100");
|
|
} else {
|
|
} else {
|
|
vo.setReceiveMoneyRate(def.format(v * 100));
|
|
vo.setReceiveMoneyRate(def.format(v * 100));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- BigDecimal bg3 = new BigDecimal(monthReceive.getReceiveMoney());
|
|
|
|
|
|
+ BigDecimal bg3 = new BigDecimal(monthReceive.getRmbje());
|
|
vo.setReceiveMoney(bg3.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
vo.setReceiveMoney(bg3.divide(math, 2, RoundingMode.HALF_UP).toString());
|
|
|
|
|
|
|
|
+
|
|
return vo;
|
|
return vo;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public String calculateYOYChange(double currentValue, double previousValue) {
|
|
|
|
+ // 处理零值情况
|
|
|
|
+ if (previousValue == 0) {
|
|
|
|
+ return "0";
|
|
|
|
+ }
|
|
|
|
+ // 计算同比变化率
|
|
|
|
+ double percentageChange = ((currentValue - previousValue) / previousValue) * 100;
|
|
|
|
+ if (percentageChange >500){
|
|
|
|
+ return "100";
|
|
|
|
+ }
|
|
|
|
+ return String.format("%.2f", percentageChange);
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<SaleTargetDetailVo> getCompleteDetail(SaleParam saleParam) {
|
|
public List<SaleTargetDetailVo> getCompleteDetail(SaleParam saleParam) {
|
|
Integer type = saleParam.getType();
|
|
Integer type = saleParam.getType();
|