计算销售报表-调整计算逻辑,增加计算字段

This commit is contained in:
king
2026-03-11 17:11:25 +08:00
parent 8f22732f04
commit ebf54b4ecf
3 changed files with 96 additions and 5 deletions

View File

@@ -19,4 +19,7 @@ public interface GrBiSaAggMapper extends BaseMapper<GrBiSaAgg> {
int deleteSalesReport(@Param("pastYearMonth") Integer pastYearMonth,
@Param("currentYearMonth") Integer currentYearMonth);
void updateThisData();
void updateLastData();
}

View File

@@ -29,8 +29,12 @@ public class GrBiSaAggServiceImpl extends ServiceImpl<GrBiSaAggMapper, GrBiSaAgg
//获取本地mysql数据库中表中UPDATE_TIME最新的数据
LambdaQueryWrapper<GrBiSaAgg> queryWrapper = new LambdaQueryWrapper<GrBiSaAgg>().orderByDesc(GrBiSaAgg::getUseYear, GrBiSaAgg::getUseMonth).last("LIMIT 1");
GrBiSaAgg grBiSaAgg = this.baseMapper.selectOne(queryWrapper);
Integer lastUserMonth = grBiSaAgg.getUseMonth();
Integer lastUserYear = grBiSaAgg.getUseYear();
int lastUserYear = 2022;
int lastUserMonth = 1;
if(grBiSaAgg != null){
lastUserYear = grBiSaAgg.getUseYear();
lastUserMonth = grBiSaAgg.getUseMonth();
}
// 获取当前时间的年和月
LocalDateTime now = LocalDateTime.now();
int currentYear = now.getYear();
@@ -57,6 +61,8 @@ public class GrBiSaAggServiceImpl extends ServiceImpl<GrBiSaAggMapper, GrBiSaAgg
}
//保存数据
removeAndSaveBatch(pastYear, pastMonth, currentYear, currentMonth, grBiSaSetdtlList);
this.baseMapper.updateThisData();
this.baseMapper.updateLastData();
}

View File

@@ -9,8 +9,8 @@
a.USEMONTH,
goods.goodsid as GOODSID,
goods.GOODSNAME,
sales.SALEZONEID,
sales.SALEZONENAME,
sales.SALEZONEID as ZONEID,
sales.SALEZONENAME as ZONENAME,
province.PROVINCEID,
province.PROVINCENAME,
salestype.SALETYPEID,
@@ -24,7 +24,7 @@
a.`本月销量` as MONTHSAQTY,
a.`含税销售额` as MONTHSAMONEY,
a.`销售成本` as MONTHCOST,
a.`毛利额` as MONTHPROFITSHARE
a.`毛利额` as MONTHPROFIT
from erp_bi_data.GR_BI_PUB_GOODS as goods
inner join erp_bi_data.GR_BI_PUB_SALEZONE as sales
inner join erp_bi_data.GR_BI_PUB_PROVINCE as province
@@ -74,4 +74,86 @@
delete from yunji_gr_bi_sa_agg
where (USEYEAR * 100 + USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth}
</delete>
<update id="updateThisData">
UPDATE yunji_gr_bi_sa_agg a
LEFT JOIN (
SELECT
USEYEAR,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID,
SUM( MONTHSAQTY ) AS THISSAQTY,
SUM( MONTHSAMONEY ) AS THISSAMONEY,
SUM( MONTHCOST) as THISCOST,
SUM( MONTHPROFIT ) AS THISPROFIT
FROM
yunji_gr_bi_sa_agg
GROUP BY
USEYEAR,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID
) b ON b.USEYEAR = a.USEYEAR
AND b.GOODSID = a.GOODSID
AND b.ZONEID = a.ZONEID
AND b.PROVINCEID = a.PROVINCEID
AND b.SALETYPEID = a.SALETYPEID
AND b.DOSAGEID = a.DOSAGEID
AND b.CUSTOMID = a.CUSTOMID
AND b.SALERID = a.SALERID
SET a.THISSAQTY = COALESCE ( b.THISSAQTY, 0 ),
a.THISSAMONEY = COALESCE ( b.THISSAMONEY, 0 ),
a.THISCOST = COALESCE ( b.THISCOST, 0 ),
a.THISPROFIT = COALESCE ( b.THISPROFIT, 0 );
</update>
<update id="updateLastData">
UPDATE yunji_gr_bi_sa_agg a
LEFT JOIN (
SELECT
USEYEAR,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID,
SUM( MONTHSAQTY ) AS LASTSAQTY,
SUM( MONTHSAMONEY ) AS LASTSAMONEY,
SUM( MONTHCOST) as LASTCOST,
SUM( MONTHPROFIT ) AS LASTPROFIT
FROM
yunji_gr_bi_sa_agg
GROUP BY
USEYEAR,
GOODSID,
ZONEID,
PROVINCEID,
SALETYPEID,
DOSAGEID,
CUSTOMID,
SALERID
) b ON b.USEYEAR = a.USEYEAR-1
AND b.GOODSID = a.GOODSID
AND b.ZONEID = a.ZONEID
AND b.PROVINCEID = a.PROVINCEID
AND b.SALETYPEID = a.SALETYPEID
AND b.DOSAGEID = a.DOSAGEID
AND b.CUSTOMID = a.CUSTOMID
AND b.SALERID = a.SALERID
SET a.LASTSAQTY = COALESCE ( b.LASTSAQTY, 0 ),
a.LASTSAMONEY = COALESCE ( b.LASTSAMONEY, 0 ),
a.LASTCOST = COALESCE ( b.LASTCOST, 0 ),
a.LASTPROFIT = COALESCE ( b.LASTPROFIT, 0 );
</update>
</mapper>