1、采购sql优化
2、销售:应收账款取前一天的应收余额各板块汇总(取不含税金额) 两金应收取各区域前一天应收余额汇总 回款率取各区域还款/应收*100 销售金额修改取不含税的值 石膏板装饰板鲁班万能板=平米单位
This commit is contained in:
parent
d25795d39c
commit
5a7cdb05d0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -252,13 +252,17 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
|
||||
// 如果时间字段存在,添加时间范围条件
|
||||
if (timeField != null && !timeField.isEmpty()) {
|
||||
conditionBuilder.append(" AND TO_DATE(")
|
||||
conditionBuilder.append("TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
|
||||
@ -278,9 +282,13 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
// 构建排序子句
|
||||
|
||||
@ -13,6 +13,9 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -50,6 +53,10 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
*/
|
||||
private static final String BO_EU_DWD_ORDER_RKD_HZ = "BO_EU_DWD_ORDER_RKD_HZ";
|
||||
|
||||
// 日期格式化
|
||||
private static final SimpleDateFormat YEAR_MONTH_FORMAT = new SimpleDateFormat("yyyy-MM");
|
||||
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
|
||||
|
||||
|
||||
// 缓存物料分类列表
|
||||
private List<String> distinctMaterialList = null;
|
||||
@ -71,11 +78,27 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
if (dateRange == null || dateRange.getStartDate() == null || dateRange.getEndDate() == null) {
|
||||
LOGGER.info("未提供有效时间范围,按当前日期计算");
|
||||
String startDate = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-mm-dd"));
|
||||
// 1. 计算并保存各板块物料采购总额、总量、单价(按月存储)
|
||||
// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList);
|
||||
|
||||
// 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据
|
||||
// monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
|
||||
// 3. 计算并保存各板块物料采购总额、总量、单价(按日存储)
|
||||
// dailyMaterialSummaryBySegment(year, month, day, currentDate, bkgs, distinctList);
|
||||
|
||||
// 4. 根据日期、入库单号、物料名称分页查询 日期、入库单号、物料编码、物料名称、规格型号、
|
||||
// (汇总)入库数量、单位、入库单价、(汇总)入库金额、供应商、订单编号、库存数
|
||||
// dailyWarehousingSummary(year, month, day, currentDate, bkgs, distinctList);
|
||||
calculateForCurrentDate(bkgs, distinctList);
|
||||
} else {
|
||||
LOGGER.info("开始执行采购数据多维度汇总计算(时间范围: {} 至 {})",
|
||||
dateRange.getStartDate(), dateRange.getEndDate());
|
||||
|
||||
String startDate = DATE_FORMAT.format(dateRange.getStartDate());
|
||||
//计算并保存各板块物料采购总额、总量、单价(按月存储)
|
||||
newmonthlyMaterialSummaryBySegment(startDate, bkgs, distinctList);
|
||||
// 计算月度维度数据(按月遍历)
|
||||
calculateMonthlyData(dateRange, bkgs, distinctList);
|
||||
|
||||
@ -91,6 +114,117 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算并保存各板块物料采购总额、总量、单价(按月存储)
|
||||
* 逻辑:按物料名称(WLMC)分组,计算月度采购总额(SUM(JSHJ))、采购总量(SUM(YSSL))和平均单价(采购总额/采购总量)
|
||||
* @param startDate
|
||||
* @param bkgs
|
||||
* @param distinctList
|
||||
*/
|
||||
private void newmonthlyMaterialSummaryBySegment(String startDate, String bkgs, List<String> distinctList) {
|
||||
try {
|
||||
LOGGER.info("开始计算{}物料采购月度汇总数据,板块公司:{}", startDate, bkgs);
|
||||
|
||||
// 1. 删除该月份已存在的汇总数据(避免重复)
|
||||
String deleteSql = "DELETE FROM " + PROCUREMENT_DETAILS_YEAR_MONTH +
|
||||
" WHERE BKGS = ? AND YEARMONTH >= ?";
|
||||
int update = DBSql.update(deleteSql, new Object[]{bkgs, startDate});
|
||||
LOGGER.info("采购_年月采购明细:{}物料采购月度汇总数据,板块公司:{},删除了{}条数据",startDate, bkgs, update);
|
||||
|
||||
String currentMonthSql = "SELECT CONCAT(YEAR(DJRQ), '-', LPAD(MONTH(DJRQ), 2, '0')) ASyear_month,c.Year AS year,c.Month AS month,c.WLMC AS WLMC," +
|
||||
" c.tstotalAmount AS tstotalAmount,c.lptotalAmount AS lptotalAmount,c.totalQuantity AS totalQuantity," +
|
||||
" ly.tstotalAmount AS LY_tstotalAmount,ly.lptotalAmount AS LY_lptotalAmount,ly.totalQuantity AS LY_totalQuantity," +
|
||||
" lm.tstotalAmount AS LM_tstotalAmount,lm.lptotalAmount AS LM_lptotalAmount,lm.totalQuantity AS LM_totalQuantity" +
|
||||
" FROM (" +
|
||||
" SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity,YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" +
|
||||
" FROM BO_EU_DWD_ORDER_RKD_HZ" +
|
||||
" WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" +
|
||||
" GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" +
|
||||
" ) c" +
|
||||
" LEFT JOIN (" +
|
||||
" SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," +
|
||||
" YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" +
|
||||
" FROM BO_EU_DWD_ORDER_RKD_HZ" +
|
||||
" WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" +
|
||||
" GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" +
|
||||
") ly ON c.WLMC = ly.WLMC AND c.Month = ly.Month AND ly.Year = c.Year - 1" +
|
||||
" LEFT JOIN (" +
|
||||
" SELECT WLMC,SUM(DHJE) AS tstotalAmount,SUM(JSHJHYF) AS lptotalAmount,SUM(RKSL) AS totalQuantity," +
|
||||
" YEAR(DJRQ) AS Year,MONTH(DJRQ) AS Month" +
|
||||
" FROM BO_EU_DWD_ORDER_RKD_HZ" +
|
||||
" WHERE BKGS = ? AND DJRQ >= DATE_FORMAT(DATE_SUB(?, INTERVAL 1 YEAR), '%Y-%m-%d')" +
|
||||
" GROUP BY WLMC, YEAR(DJRQ), MONTH(DJRQ)" +
|
||||
") lm ON c.WLMC = lm.WLMC" +
|
||||
" AND ( (c.Month > 1 AND c.Year = lm.Year AND c.Month = lm.Month + 1) OR(c.Month = 1 AND c.Year = lm.Year + 1 AND lm.Month = 12))" +
|
||||
"WHERE c.Year = YEAR(?)" +
|
||||
"ORDER BY c.Year, c.Month";
|
||||
List<RowMap> currentMonthData = DBSql.getMaps(currentMonthSql, bkgs, startDate,bkgs,startDate,bkgs,startDate,startDate);
|
||||
|
||||
if (currentMonthData==null){
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. 批量插入
|
||||
List<BO> bos = new ArrayList<>();
|
||||
for (RowMap currentMonthRow : currentMonthData) {
|
||||
String wlmc = currentMonthRow.getString("WLMC");
|
||||
BO bo = new BO();
|
||||
bo.set("BKGS",bkgs);//板块
|
||||
bo.set("WLMC",wlmc);//物料名称
|
||||
bo.set("YEARMONTH",currentMonthRow.getString("ASyear_month"));//年月(YYYYMM)
|
||||
if (bkgs.equals("泰山石膏")) {
|
||||
Double tstotalAmount = currentMonthRow.getDouble("tstotalAmount");
|
||||
double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount;
|
||||
Double totalQuantity = currentMonthRow.getDouble("totalQuantity");
|
||||
double totalQuantity1 = totalQuantity==null?0.0: totalQuantity;
|
||||
bo.set("CGZE", tstotalAmount1);//采购总额
|
||||
bo.set("CGZL",totalQuantity1);//采购总量
|
||||
if (tstotalAmount1!=0 && totalQuantity1!=0) {
|
||||
bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价
|
||||
}else {
|
||||
bo.set("PJDJ", 0);//平均单价
|
||||
}
|
||||
bo.set("TQCGZE",currentMonthRow.getString("LY_tstotalAmount"));//同期采购总额
|
||||
bo.set("SQCGZE",currentMonthRow.getString("LM_tstotalAmount"));//上期采购总额
|
||||
}else {
|
||||
Double tstotalAmount = currentMonthRow.getDouble("lptotalAmount");
|
||||
double tstotalAmount1 = tstotalAmount==null?0.0: tstotalAmount;
|
||||
Double totalQuantity = currentMonthRow.getDouble("totalQuantity");
|
||||
double totalQuantity1 = totalQuantity==null?0.0: totalQuantity;
|
||||
bo.set("CGZE", tstotalAmount1);//采购总额
|
||||
bo.set("CGZL",totalQuantity1);//采购总量
|
||||
if (tstotalAmount1!=0 && totalQuantity1!=0) {
|
||||
bo.set("PJDJ", tstotalAmount1/totalQuantity1);//平均单价
|
||||
}else {
|
||||
bo.set("PJDJ", 0);//平均单价
|
||||
}
|
||||
bo.set("TQCGZE",currentMonthRow.getString("LY_lptotalAmount"));//同期采购总额
|
||||
bo.set("SQCGZE",currentMonthRow.getString("LM_lptotalAmount"));//上期采购总额
|
||||
}
|
||||
bo.set("TQCGZL",currentMonthRow.getString("LY_totalQuantity"));//同期采购总量
|
||||
bo.set("SQCGZL",currentMonthRow.getString("LM_totalQuantity"));//上期采购总量
|
||||
bos.add(bo);
|
||||
}
|
||||
|
||||
if (!bos.isEmpty()) {
|
||||
// 批量插入数据
|
||||
int batchSize = 1000;
|
||||
for (int i = 0; i < bos.size(); i += batchSize) {
|
||||
int end = Math.min(i + batchSize, bos.size());
|
||||
List<BO> batch = bos.subList(i, end);
|
||||
SDK.getBOAPI().createDataBO(PROCUREMENT_DETAILS_YEAR_MONTH, batch, UserContext.fromUID("admin"));
|
||||
}
|
||||
}
|
||||
|
||||
LOGGER.info("成功保存{}条月度汇总数据,板块:{}", bos.size(), bkgs);
|
||||
|
||||
} catch (Exception e) {
|
||||
String errorMsg = String.format("月度汇总计算失败(开始时间=%s,板块=%s): %s", startDate, bkgs, e.getMessage());
|
||||
LOGGER.error(errorMsg, e);
|
||||
throw new RuntimeException(errorMsg, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取物料分类列表(带缓存)
|
||||
*/
|
||||
@ -153,7 +287,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
Date currentDate = new Date(System.currentTimeMillis());
|
||||
|
||||
// 1. 计算并保存各板块物料采购总额、总量、单价(按月存储)
|
||||
monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
|
||||
// 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据
|
||||
monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
@ -201,7 +335,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
LOGGER.info("计算月度汇总数据: {}-{};上月:{};上年同期:{}", year, month, yearLastMonth, lastYearMonth);
|
||||
|
||||
// 1. 计算并保存各板块物料采购总额、总量、单价(按月存储)
|
||||
monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
// monthlyMaterialSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
|
||||
// 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据
|
||||
monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
|
||||
@ -282,13 +282,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
|
||||
// 如果时间字段存在,添加时间范围条件
|
||||
if (timeField != null && !timeField.isEmpty()) {
|
||||
conditionBuilder.append(" AND TO_DATE(")
|
||||
conditionBuilder.append("TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
|
||||
@ -308,9 +312,13 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
// 构建排序子句
|
||||
|
||||
@ -86,7 +86,7 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
|
||||
dateRange.setEndDate(cal.getTime());
|
||||
// calculateForCurrentDate(bkgs);
|
||||
calculateMonthlyData(dateRange, bkgs);
|
||||
// calculateMonthlyData(dateRange, bkgs);
|
||||
// 处理营业收入数据
|
||||
newProcessRevenueData(dateRange,bkgs);
|
||||
// 处理销量销额数据(分页查询)
|
||||
@ -138,7 +138,13 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
|
||||
try {
|
||||
// 第一个SQL:查询应收账款数据
|
||||
String receivableSql = "SELECT t1.QYGS AS QYGS, t1.BKGS AS BKGS, DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK" +
|
||||
String receivableSql = "SELECT t1.XSZZ AS XSZZ, t1.QYGS AS QYGS, t1.BKGS AS BKGS," +
|
||||
" DATE_FORMAT( t1.RQ, '%Y-%m' ) ASyear_month, t1.RQ AS max_rq, SUM( t1.YSYE ) AS YSZK," +
|
||||
" SUM(t1.LJHK) AS LJHK,SUM(t1.LJXS) AS LJXS," +
|
||||
" CASE " +
|
||||
" WHEN SUM(t1.LJXS) != 0 THEN SUM(t1.LJHK) / SUM(t1.LJXS)" +
|
||||
" ELSE NULL " +
|
||||
" END AS hkl" +
|
||||
" FROM BO_EU_BNBM_DATALINKUP_XS_YSL t1" +
|
||||
" INNER JOIN (" +
|
||||
" SELECT QYGS, BKGS, DATE_FORMAT( RQ, '%Y-%m' ) ASyear_month, MAX( RQ ) AS max_rq" +
|
||||
@ -149,6 +155,7 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
" WHERE t1.RQ >= ? AND t1.RQ < ? AND t1.BKGS = ?" +
|
||||
" GROUP BY t1.QYGS,t1.BKGS,DATE_FORMAT ( t1.RQ, '%Y-%m' ),t1.RQ";
|
||||
|
||||
|
||||
String startDate = DATE_FORMAT.format(dateRange.getStartDate());
|
||||
String endDate = DATE_FORMAT.format(dateRange.getEndDate());
|
||||
|
||||
@ -212,7 +219,10 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
bo.set("BKGS", bkgs);
|
||||
bo.set("QYGS", receivable.getString("QYGS"));
|
||||
bo.set("YSZK", yszk);
|
||||
bo.set("KCJE", kcje);
|
||||
bo.set("CCJE", kcje);
|
||||
bo.set("LJHK", receivable.getString("LJHK"));
|
||||
bo.set("LJXS", receivable.getString("LJXS"));
|
||||
bo.set("HKL", receivable.getString("HKL"));
|
||||
bos.add(bo);
|
||||
}
|
||||
|
||||
@ -265,7 +275,7 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
));
|
||||
|
||||
String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(ZSSL) AS XL," +
|
||||
" SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, YEARMONTH" +
|
||||
" SUM(SSJERMB) AS XE, SUM(XSSL) AS TSXL, NMNY ,YEARMONTH" +
|
||||
" FROM " + SALES_DETAIL_TABLE +
|
||||
" WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" +
|
||||
" GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH";
|
||||
@ -302,7 +312,9 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
}else {
|
||||
bo.set("XL", map.getDouble("XL"));
|
||||
}
|
||||
bo.set("XE", map.getDouble("XE"));
|
||||
Double ssjermb = map.getDouble("SSJERMB");
|
||||
Double xe = map.getDouble("XE");
|
||||
bo.set("XE", ssjermb!=null?ssjermb:xe!=null?(xe*0.13):0.00);
|
||||
bo.set("MC_JC", Math.random()%2==0?"面材":"基材");
|
||||
bo.set("JZ_GZ", Math.random()%2==0?"家装":"工装");
|
||||
bos.add(bo);
|
||||
@ -354,7 +366,7 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
|
||||
String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(SSJERMB) as YYSR, YEARMONTH" +
|
||||
String querySql = "SELECT QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, SUM(NMNY) as YYSR, YEARMONTH" +
|
||||
" FROM " + SALES_DETAIL_TABLE +
|
||||
" WHERE DZRQ >= ? AND DZRQ < ? AND BKGS = ?" +
|
||||
" GROUP BY QYGS, KCZZ, LB_1, LB_2, LB_3, SQ, CS, QY, YEARMONTH";
|
||||
@ -682,8 +694,8 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
String querySql = "SELECT QYGS, XSZZ, SHENGQU, SHIQU, QX, QCYE, LJXS, LJHK, YSYE, " +
|
||||
"ZLFX0_60, ZLFX60_1, ZLFX1_2, ZLFX2_3, ZLFX3_4, ZLFX4_5, ZLFX5 " +
|
||||
"FROM " + RECEIVABLE_DETAIL_TABLE + " " +
|
||||
"WHERE DATE(RQ) = ? AND BKGS = ? ";
|
||||
// +"LIMIT " + PAGE_SIZE + " OFFSET " + offset;
|
||||
"WHERE DATE(RQ) = ? AND BKGS = ? " +
|
||||
"LIMIT " + PAGE_SIZE + " OFFSET " + offset;
|
||||
|
||||
LOGGER.info("应收账款数据查询第{}页,SQL: {}", page + 1, querySql);
|
||||
List<RowMap> maps = DBSql.getMaps(conn, querySql, lastDayOfMonth, bkgs);
|
||||
@ -724,7 +736,11 @@ public class SaleCountDimensionImpl implements DataSummaryService {
|
||||
|
||||
// 批量新增BO
|
||||
if (!bos.isEmpty()) {
|
||||
SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, bos, UserContext.fromUID("admin"));
|
||||
for (int i = 0; i < bos.size(); i += BATCH_SIZE) {
|
||||
int end = Math.min(bos.size(), i + BATCH_SIZE);
|
||||
List<BO> batchList = bos.subList(i, end);
|
||||
SDK.getBOAPI().createDataBO(BO_EU_XS_YSZK, batchList, UserContext.fromUID("admin"));
|
||||
}
|
||||
totalCount += bos.size();
|
||||
LOGGER.info("应收账款数据第{}页处理完成,本页{}条记录,累计{}条", page + 1, bos.size(), totalCount);
|
||||
}
|
||||
|
||||
@ -218,13 +218,17 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
|
||||
// 如果时间字段存在,添加时间范围条件
|
||||
if (timeField != null && !timeField.isEmpty()) {
|
||||
conditionBuilder.append(" AND TO_DATE(")
|
||||
conditionBuilder.append("TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
|
||||
@ -244,9 +248,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') BETWEEN TO_DATE(?, '")
|
||||
.append("') >= TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') AND TO_DATE(?, '")
|
||||
.append("') AND TO_DATE(")
|
||||
.append(timeField)
|
||||
.append(", '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("') < TO_DATE(?, '")
|
||||
.append(ORACLE_DATE_FORMAT)
|
||||
.append("')");
|
||||
// 构建排序子句
|
||||
@ -801,6 +809,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
bo.set(key, map.get(key));
|
||||
}
|
||||
}
|
||||
//修改产量类型1
|
||||
if ("龙牌".equals(map.getString("BKGS"))
|
||||
&& ("装饰石膏板".equals(map.getString("LB_1")) || "鲁班装饰万能板".equals(map.getString("LB_1")))){
|
||||
bo.set("LB_1","石膏板");
|
||||
} else if ("泰山石膏".equals(map.getString("BKGS")) && ("装饰板".equals(map.getString("LB_1")))) {
|
||||
bo.set("LB_1","石膏板");
|
||||
}
|
||||
bos.add(bo);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user