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

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, int deleteSalesReport(@Param("pastYearMonth") Integer pastYearMonth,
@Param("currentYearMonth") Integer currentYearMonth); @Param("currentYearMonth") Integer currentYearMonth);
void updateThisData();
void updateLastData();
} }

View File

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

View File

@@ -9,8 +9,8 @@
a.USEMONTH, a.USEMONTH,
goods.goodsid as GOODSID, goods.goodsid as GOODSID,
goods.GOODSNAME, goods.GOODSNAME,
sales.SALEZONEID, sales.SALEZONEID as ZONEID,
sales.SALEZONENAME, sales.SALEZONENAME as ZONENAME,
province.PROVINCEID, province.PROVINCEID,
province.PROVINCENAME, province.PROVINCENAME,
salestype.SALETYPEID, salestype.SALETYPEID,
@@ -24,7 +24,7 @@
a.`本月销量` as MONTHSAQTY, a.`本月销量` as MONTHSAQTY,
a.`含税销售额` as MONTHSAMONEY, a.`含税销售额` as MONTHSAMONEY,
a.`销售成本` as MONTHCOST, a.`销售成本` as MONTHCOST,
a.`毛利额` as MONTHPROFITSHARE a.`毛利额` as MONTHPROFIT
from erp_bi_data.GR_BI_PUB_GOODS as goods 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_SALEZONE as sales
inner join erp_bi_data.GR_BI_PUB_PROVINCE as province inner join erp_bi_data.GR_BI_PUB_PROVINCE as province
@@ -74,4 +74,86 @@
delete from yunji_gr_bi_sa_agg delete from yunji_gr_bi_sa_agg
where (USEYEAR * 100 + USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth} where (USEYEAR * 100 + USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth}
</delete> </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> </mapper>