一体化营业收入代码优化

This commit is contained in:
yujh_java 2025-09-18 14:12:54 +08:00
parent e6e24ee5a4
commit 987a88c562

View File

@ -881,8 +881,8 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
+ " WHERE YEARMONTH >= '" + yearMonth + "' AND BKGS = '"+bkgs+"'");
LOGGER.info("准备同步{}年{}月-营业收入累计数据,删除了{}条数据",year, month,delete);
//计算轻钢龙骨和石膏板
String querySql = "SELECT " +
" BKGS,"+
String querySql = " SELECT " +
" BKGS, " +
" LB_1, " +
" CASE " +
" WHEN SQ LIKE '%海南%' THEN '海南' " +
@ -896,42 +896,49 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
" (SQ LIKE '%海南%' OR SQ LIKE '%新疆%' OR SQ LIKE '%西藏%') " +
" AND DZRQ >= ? " +
" AND BKGS = ? " +
" AND LB_1 IN('石膏板','轻钢龙骨','涂料') " +
" AND LB_1 IN ('石膏板', '轻钢龙骨', '涂料') " +
" GROUP BY " +
" BKGS," +
" BKGS, " +
" LB_1, " +
" PROVINCE, " +
" YEARMONTH " +
" ORDER BY " +
" CASE " +
" WHEN SQ LIKE '%海南%' THEN '海南' " +
" WHEN SQ LIKE '%新疆%' THEN '新疆' " +
" WHEN SQ LIKE '%西藏%' THEN '西藏' " +
" END, " +
" DATE_FORMAT(DZRQ, '%Y-%m') " +
" UNION ALL " +
" SELECT " +
" BKGS, " +
" LB_1, " +
" '一体化' AS PROVINCE, " +
" DATE_FORMAT(DZRQ, '%Y-%m') AS YEARMONTH, " +
" SUM(NMNY) AS REVENUE_AMOUNT " +
" FROM BO_EU_BNBM_DATALINKUP_XS_XSL_HZ " +
" WHERE " +
" (SQ LIKE '%海南%' OR SQ LIKE '%新疆%' OR SQ LIKE '%西藏%') " +
" AND DZRQ >= ? " +
" AND BKGS = ? " +
" AND LB_1 IN ('石膏板', '轻钢龙骨', '涂料') " +
"GROUP BY " +
" BKGS, " +
" LB_1, " +
"'一体化', " +
" DATE_FORMAT(DZRQ, '%Y-%m') " +
"ORDER BY " +
" YEARMONTH ASC, " +
" PROVINCE ASC, " +
" LB_1 ASC";
List<RowMap> rowMaps = DBSql.getMaps(querySql, startDate,bkgs);
List<RowMap> rowMaps = DBSql.getMaps(querySql, startDate,bkgs,startDate,bkgs);
LOGGER.info("板块公司:{},本次查询数据:{}",bkgs,rowMaps.size());
// 保存数据
List<BO> list = new ArrayList<>();
for (RowMap rowMap : rowMaps) {
BO revenueBO = createBaseBO(bkgs);
String category = rowMap.getString("LB_1");
String province = rowMap.getString("PROVINCE");
String revenueAmount = rowMap.getString("REVENUE_AMOUNT");
String year_month = rowMap.getString("YEARMONTH");
revenueBO.set("YEARMONTH", year_month);
if ("北新嘉宝莉".equals(bkgs)){
if ("其他".equals(category)){
revenueBO.set("PRODUCT_CATEGORY", category);
}else {
revenueBO.set("PRODUCT_CATEGORY", "涂料");
}
} else if ("石膏板".equals(category) || "轻钢龙骨".equals(category)) {
revenueBO.set("PRODUCT_CATEGORY", category);
}else {
revenueBO.set("PRODUCT_CATEGORY", "其他");
}
revenueBO.set("REVENUE_AMOUNT", revenueAmount);
revenueBO.set("SHENGQU", province);//省区
list.add(revenueBO);
}
// 插入海南新疆西藏
addSummaryData(list, rowMaps,bkgs);
// 插入一体化数据
addSummaryData(list, rowMaps,bkgs);
SDK.getBOAPI().createDataBO(REVENUE_YEAR_TABLE,list,UserContext.fromUID("admin"));
LOGGER.info("营业收入月度累计数据保存成功");
} catch (Exception e) {
@ -1264,4 +1271,29 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
return null;
}
}
public void addSummaryData(List<BO> list, List<RowMap> rowMaps,String bkgs) {
for (RowMap rowMap : rowMaps) {
BO revenueBO = createBaseBO(bkgs);
String category = rowMap.getString("LB_1");
String province = rowMap.getString("PROVINCE");
String revenueAmount = rowMap.getString("REVENUE_AMOUNT");
String year_month = rowMap.getString("YEARMONTH");
revenueBO.set("YEARMONTH", year_month);
if ("北新嘉宝莉".equals(bkgs)){
if ("其他".equals(category)){
revenueBO.set("PRODUCT_CATEGORY", category);
}else {
revenueBO.set("PRODUCT_CATEGORY", "涂料");
}
} else if ("石膏板".equals(category) || "轻钢龙骨".equals(category)) {
revenueBO.set("PRODUCT_CATEGORY", category);
}else {
revenueBO.set("PRODUCT_CATEGORY", "其他");
}
revenueBO.set("REVENUE_AMOUNT", revenueAmount);
revenueBO.set("SHENGQU", province);//省区
list.add(revenueBO);
}
}
}