1、泰山销售数据石膏板取折算数量修改
2、销售数据取当月累计,不取当前累计 3、采购汇总取值修改为取采购入库单
This commit is contained in:
parent
afc1ad251b
commit
b207a61f74
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -467,6 +467,8 @@ public class DataLinkUpController {
|
||||
hzb = "BO_EU_DWD_ORDER_YFD_HZ";
|
||||
} else if ("库存".equals(tablename)) {
|
||||
hzb = "BO_EU_DWD_ORDER_KC_HZ";
|
||||
} else if ("物流表".equals(tablename)) {
|
||||
hzb = "BO_EU_CG_WLD_HZ";
|
||||
} else {
|
||||
hzb = "BO_EU_DWD_ORDER_RKD_HZ";
|
||||
}
|
||||
|
||||
@ -392,6 +392,8 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
public int processAndInsertData(List<RowMap> sourceData,
|
||||
List<BO> mappings, String targetTable) {
|
||||
String bkgs = "";
|
||||
Set<String> bkgsSet = null;
|
||||
LOGGER.info("当前查询到的数据中的板块:{}",bkgs);
|
||||
if (sourceData.isEmpty()) {
|
||||
LOGGER.info("没有需要同步的数据");
|
||||
return 0;
|
||||
@ -408,7 +410,6 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
try {
|
||||
// 字段映射转换
|
||||
BO targetData = convertFields(record, mappings);
|
||||
bkgs = targetData.getString("BKGS");
|
||||
batchList.add(targetData);
|
||||
|
||||
// 批量插入条件:达到批处理大小或最后一条
|
||||
@ -416,6 +417,7 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
// 使用管理员权限批量插入
|
||||
SDK.getBOAPI().createDataBO(targetTable, batchList, UserContext.fromUID("admin"));
|
||||
successCount += batchList.size();
|
||||
bkgsSet = sourceData.stream().map(o->o.getString("BKGS")).distinct().collect(Collectors.toSet());
|
||||
batchList.clear(); // 清空批次
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -423,7 +425,8 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
}
|
||||
}
|
||||
// 增加详细日志输出:共处理多少条,成功同步多少条
|
||||
LOGGER.info("同步板块为:{},落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs = bkgsSet.toArray().toString();
|
||||
LOGGER.info("同步板块为:{};落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs,targetTable,processedCount, successCount, targetTable);
|
||||
return successCount;
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
*/
|
||||
private static final String BO_EU_DWD_ORDER_RKD_HZ = "BO_EU_DWD_ORDER_RKD_HZ";
|
||||
|
||||
|
||||
// 缓存物料分类列表
|
||||
private List<String> distinctMaterialList = null;
|
||||
private long lastMaterialListUpdateTime = 0;
|
||||
@ -98,7 +99,8 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
}
|
||||
|
||||
try {
|
||||
List<RowMap> maps = DBSql.getMaps("SELECT WLMC FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY + " GROUP BY WLMC");
|
||||
// List<RowMap> maps = DBSql.getMaps("SELECT WLMC FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY + " GROUP BY WLMC");
|
||||
List<RowMap> maps = DBSql.getMaps("SELECT WLMC FROM " + BO_EU_DWD_ORDER_RKD_HZ + " GROUP BY WLMC");
|
||||
Set<String> resultSet = new HashSet<>();
|
||||
for (RowMap row : maps) {
|
||||
String wlmc = row.getString("WLMC");
|
||||
@ -202,11 +204,25 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 2. 根据年月汇总板块、基地、年月、当期、上期、同期数据
|
||||
monthlyBaseSummaryBySegment(year, month, yearMonth, yearLastMonth, lastYearMonth, bkgs, distinctList);
|
||||
|
||||
// 库存方法汇总 每月、板块、库存组织
|
||||
// calculateMonthlyInventoryData(year, month, yearMonth, bkgs, distinctList);
|
||||
|
||||
// 移动到下个月
|
||||
monthCal.add(Calendar.MONTH, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 库存方法汇总 每月、板块、库存组织
|
||||
* @param year
|
||||
* @param month
|
||||
* @param yearMonth
|
||||
* @param bkgs
|
||||
* @param distinctList
|
||||
*/
|
||||
private void calculateMonthlyInventoryData(int year, int month, String yearMonth, String bkgs, List<String> distinctList) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算日度维度数据
|
||||
*/
|
||||
@ -254,33 +270,46 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 1. 删除该月份已存在的汇总数据(避免重复)
|
||||
String deleteSql = "DELETE FROM " + JD_PROCUREMENT_DETAILS_YEAR_MONTH +
|
||||
" WHERE BKGS = ? AND YEARMONTH = ?";
|
||||
DBSql.update(deleteSql, new Object[]{bkgs, yearMonth});
|
||||
int update = DBSql.update(deleteSql, new Object[]{bkgs, yearMonth});
|
||||
LOGGER.info("采购_基地_年月采购明细:{}年{}月物料采购月度汇总数据,板块公司:{},删除了{}条数据", year, month, bkgs, update);
|
||||
|
||||
// 2. 一次性查询当前月、上月和去年同期数据(包含基地信息)
|
||||
// 当前月数据
|
||||
String currentMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
"GROUP BY WLMC, XQGC";
|
||||
// String currentMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC, XQGC";
|
||||
String currentMonthSql = "SELECT WLMC, SLGC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
"FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
"GROUP BY WLMC, SLGC";
|
||||
List<RowMap> currentMonthData = DBSql.getMaps(currentMonthSql, bkgs, yearMonth + "%");
|
||||
|
||||
// 上月数据
|
||||
List<RowMap> lastMonthData = Collections.emptyList();
|
||||
if (StringUtils.isNotBlank(yearLastMonth)) {
|
||||
String lastMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
"GROUP BY WLMC, XQGC";
|
||||
// String lastMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC, XQGC";
|
||||
String lastMonthSql = "SELECT WLMC, SLGC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
"FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
"GROUP BY WLMC, SLGC";
|
||||
lastMonthData = DBSql.getMaps(lastMonthSql, bkgs, yearLastMonth + "%");
|
||||
}
|
||||
|
||||
// 去年同期数据
|
||||
List<RowMap> lastYearMonthData = Collections.emptyList();
|
||||
if (StringUtils.isNotBlank(lastYearMonth)) {
|
||||
String lastYearMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
"GROUP BY WLMC, XQGC";
|
||||
// String lastYearMonthSql = "SELECT WLMC, XQGC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC, XQGC";
|
||||
String lastYearMonthSql = "SELECT WLMC, SLGC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
" FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
" GROUP BY WLMC, SLGC";
|
||||
lastYearMonthData = DBSql.getMaps(lastYearMonthSql, bkgs, lastYearMonth + "%");
|
||||
}
|
||||
|
||||
@ -290,7 +319,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
.collect(Collectors.toMap(
|
||||
row -> {
|
||||
String wlmc = row.getString("WLMC");
|
||||
String base = row.getString("XQGC");
|
||||
String base = row.getString("SLGC");
|
||||
String processedWlmc = processMaterialName(wlmc);
|
||||
return processedWlmc + "|" + base;
|
||||
},
|
||||
@ -313,7 +342,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
.collect(Collectors.toMap(
|
||||
row -> {
|
||||
String wlmc = row.getString("WLMC");
|
||||
String base = row.getString("XQGC");
|
||||
String base = row.getString("SLGC");
|
||||
String processedWlmc = processMaterialName(wlmc);
|
||||
return processedWlmc + "|" + base;
|
||||
},
|
||||
@ -336,7 +365,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
.collect(Collectors.toMap(
|
||||
row -> {
|
||||
String wlmc = row.getString("WLMC");
|
||||
String base = row.getString("XQGC");
|
||||
String base = row.getString("SLGC");
|
||||
String processedWlmc = processMaterialName(wlmc);
|
||||
return processedWlmc + "|" + base;
|
||||
},
|
||||
@ -357,14 +386,14 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 4. 获取所有基地
|
||||
Set<String> bases = new HashSet<>();
|
||||
for (RowMap row : currentMonthData) {
|
||||
bases.add(row.getString("XQGC"));
|
||||
}
|
||||
for (RowMap row : lastMonthData) {
|
||||
bases.add(row.getString("XQGC"));
|
||||
}
|
||||
for (RowMap row : lastYearMonthData) {
|
||||
bases.add(row.getString("XQGC"));
|
||||
bases.add(row.getString("SLGC"));
|
||||
}
|
||||
// for (RowMap row : lastMonthData) {
|
||||
// bases.add(row.getString("SLGC"));
|
||||
// }
|
||||
// for (RowMap row : lastYearMonthData) {
|
||||
// bases.add(row.getString("SLGC"));
|
||||
// }
|
||||
|
||||
// 5. 批量插入
|
||||
List<BO> bos = new ArrayList<>();
|
||||
@ -377,13 +406,25 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
BO summaryBO = new BO();
|
||||
summaryBO.set("BKGS", bkgs);
|
||||
summaryBO.set("JD", base);
|
||||
List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
// addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// if (bnbmCgPzwlfl!=null){
|
||||
// String wlfl = bnbmCgPzwlfl.stream().map(o -> o.getString("WLFL")).collect(Collectors.joining("|"));
|
||||
// summaryBO.set("WLMC", wlfl);
|
||||
// }else {
|
||||
if(("龙牌".equals(bkgs) || "梦牌".equals(bkgs) || "泰山石膏".equals(bkgs))
|
||||
&& (wlmc.contains("脱硫石膏") || wlmc.contains("护面纸"))){
|
||||
summaryBO.set("WLMC", "脱硫石膏");
|
||||
} else if ("泰山石膏".equals(bkgs) && wlmc.contains("镀锌带钢")) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs))
|
||||
&& (wlmc.equals("轻钢镀锌带钢") || wlmc.equals("镀锌带钢"))) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("泰山石膏".equals(bkgs) || "龙牌".equals(bkgs) || "梦牌".equals(bkgs)) && wlmc.contains("乳液")) {
|
||||
continue;
|
||||
}else {
|
||||
summaryBO.set("WLMC", wlmc);
|
||||
}
|
||||
// }
|
||||
summaryBO.set("YEARMONTH", yearMonth);
|
||||
summaryBO.set("CGZE", currentMonthRow.getDouble("totalAmount"));
|
||||
@ -451,22 +492,30 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 1. 删除该月份已存在的汇总数据(避免重复)
|
||||
String deleteSql = "DELETE FROM " + PROCUREMENT_DETAILS_YEAR_MONTH +
|
||||
" WHERE BKGS = ? AND YEARMONTH = ?";
|
||||
DBSql.update(deleteSql, new Object[]{bkgs, yearMonth});
|
||||
int update = DBSql.update(deleteSql, new Object[]{bkgs, yearMonth});
|
||||
LOGGER.info("采购_年月采购明细:{}年{}月物料采购月度汇总数据,板块公司:{},删除了{}条数据", year, month, bkgs, update);
|
||||
|
||||
// 2. 一次性查询当前月、上月和去年同期数据
|
||||
// 当前月数据
|
||||
String currentMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// String currentMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC";
|
||||
String currentMonthSql = "SELECT WLMC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
" FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
" GROUP BY WLMC";
|
||||
List<RowMap> currentMonthData = DBSql.getMaps(currentMonthSql, bkgs, yearMonth + "%");
|
||||
|
||||
// 上月数据
|
||||
List<RowMap> lastMonthData = Collections.emptyList();
|
||||
if (StringUtils.isNotBlank(yearLastMonth)) {
|
||||
String lastMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// String lastMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC";
|
||||
String lastMonthSql = "SELECT WLMC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
" FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
" GROUP BY WLMC";
|
||||
lastMonthData = DBSql.getMaps(lastMonthSql, bkgs, yearLastMonth + "%");
|
||||
}
|
||||
@ -474,9 +523,13 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 去年同期数据
|
||||
List<RowMap> lastYearMonthData = Collections.emptyList();
|
||||
if (StringUtils.isNotBlank(lastYearMonth)) {
|
||||
String lastYearMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// String lastYearMonthSql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ LIKE ? " +
|
||||
// "GROUP BY WLMC";
|
||||
String lastYearMonthSql = "SELECT WLMC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
" FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ LIKE ? " +
|
||||
" GROUP BY WLMC";
|
||||
lastYearMonthData = DBSql.getMaps(lastYearMonthSql, bkgs, lastYearMonth + "%");
|
||||
}
|
||||
@ -538,19 +591,33 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
// 4. 批量插入
|
||||
List<BO> bos = new ArrayList<>();
|
||||
for (String wlmc : distinctList) {
|
||||
RowMap currentMonthRow = currentMonthMap.get(wlmc);
|
||||
// for (String wlmc : distinctList) {
|
||||
// RowMap currentMonthRow = currentMonthMap.get(wlmc);
|
||||
for (RowMap currentMonthRow : currentMonthData) {
|
||||
String wlmc = currentMonthRow.getString("WLMC");
|
||||
if (currentMonthRow == null || currentMonthRow.getDouble("totalAmount") == 0.0) continue;
|
||||
|
||||
BO summaryBO = new BO();
|
||||
summaryBO.set("YEARMONTH", yearMonth);
|
||||
List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
// addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// if (bnbmCgPzwlfl!=null){
|
||||
// String wlfl = bnbmCgPzwlfl.stream().map(o -> o.getString("WLFL")).collect(Collectors.joining("|"));
|
||||
// summaryBO.set("WLMC", wlfl);
|
||||
// }else {
|
||||
if(("龙牌".equals(bkgs) || "梦牌".equals(bkgs) || "泰山石膏".equals(bkgs))
|
||||
&& (wlmc.contains("脱硫石膏") || wlmc.contains("护面纸"))){
|
||||
summaryBO.set("WLMC", "脱硫石膏");
|
||||
} else if ("泰山石膏".equals(bkgs) && wlmc.contains("镀锌带钢")) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs))
|
||||
&& (wlmc.equals("轻钢镀锌带钢") || wlmc.equals("镀锌带钢"))) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("泰山石膏".equals(bkgs) || "龙牌".equals(bkgs) || "梦牌".equals(bkgs)) && wlmc.contains("乳液")) {
|
||||
continue;
|
||||
}else {
|
||||
summaryBO.set("WLMC", wlmc);
|
||||
}
|
||||
// }
|
||||
summaryBO.set("CGZE", currentMonthRow.getDouble("totalAmount"));
|
||||
summaryBO.set("CGZL", currentMonthRow.getDouble("totalQuantity"));
|
||||
@ -614,12 +681,17 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
// 1. 删除该日期已存在的汇总数据
|
||||
String deleteSql = "DELETE FROM " + PROCUREMENT_DETAILS_YEAR_MONTH_DAY +
|
||||
" WHERE BKGS = ? AND RQ = ?";
|
||||
DBSql.update(deleteSql, new Object[]{bkgs,dateStr});
|
||||
int update = DBSql.update(deleteSql, new Object[]{bkgs, dateStr});
|
||||
LOGGER.info("采购_年月日采购明细:{}年{}月物料采购月度汇总数据,板块公司:{},删除了{}条数据", year, month, bkgs, update);
|
||||
|
||||
// 2. 查询当天数据
|
||||
String querySql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
"FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
" WHERE BKGS = ? AND CGRQ = ? " +
|
||||
// String querySql = "SELECT WLMC, SUM(JSHJ) AS totalAmount, SUM(YSSL) AS totalQuantity " +
|
||||
// "FROM " + PROCUREMENT_PURCHASE_ORDER_SUMMARY +
|
||||
// " WHERE BKGS = ? AND CGRQ = ? " +
|
||||
// "GROUP BY WLMC";
|
||||
String querySql = "SELECT WLMC, SUM(JSHJHYF) AS totalAmount, SUM(RKSL) AS totalQuantity " +
|
||||
"FROM " + BO_EU_DWD_ORDER_RKD_HZ +
|
||||
" WHERE BKGS = ? AND DJRQ = ? " +
|
||||
"GROUP BY WLMC";
|
||||
List<RowMap> dailyData = DBSql.getMaps(querySql, bkgs, dateStr);
|
||||
|
||||
@ -649,13 +721,25 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
BO summaryBO = new BO();
|
||||
summaryBO.set("RQ", dateStr);
|
||||
List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// List<BO> bnbmCgPzwlfl = SDK.getBOAPI().query("BO_EU_BNBM_CG_PZWLFL").
|
||||
// addQuery("BKMC = ", bkgs).addQuery("WLMC LIKE '%" + wlmc + "%'", null).list();
|
||||
// if (bnbmCgPzwlfl!=null){
|
||||
// String wlfl = bnbmCgPzwlfl.stream().map(o -> o.getString("WLFL")).collect(Collectors.joining("|"));
|
||||
// summaryBO.set("WLMC", wlfl);
|
||||
// }else {
|
||||
if(("龙牌".equals(bkgs) || "梦牌".equals(bkgs) || "泰山石膏".equals(bkgs))
|
||||
&& (wlmc.contains("脱硫石膏") || wlmc.contains("护面纸"))){
|
||||
summaryBO.set("WLMC", "脱硫石膏");
|
||||
} else if ("泰山石膏".equals(bkgs) && wlmc.contains("镀锌带钢")) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs))
|
||||
&& (wlmc.equals("轻钢镀锌带钢") || wlmc.equals("镀锌带钢"))) {
|
||||
summaryBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("泰山石膏".equals(bkgs) || "龙牌".equals(bkgs) || "梦牌".equals(bkgs)) && wlmc.contains("乳液")) {
|
||||
continue;
|
||||
}else {
|
||||
summaryBO.set("WLMC", wlmc);
|
||||
}
|
||||
// }
|
||||
summaryBO.set("CGZE", row.getDouble("totalAmount"));
|
||||
summaryBO.set("CGZL", row.getDouble("totalQuantity"));
|
||||
@ -703,11 +787,12 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
try {
|
||||
// 1. 删除该日期已存在的汇总数据(避免重复)
|
||||
String deleteSql = "DELETE FROM BO_EU_CG_NYRKMX WHERE BKGS = ? AND DATE = ?";
|
||||
DBSql.update(deleteSql, new Object[]{bkgs, dateStr});
|
||||
int update = DBSql.update(deleteSql, new Object[]{bkgs, dateStr});
|
||||
LOGGER.info("已清理{}的旧入库明细数据", dateStr);
|
||||
LOGGER.info("采购_年月入库明细:{}年{}月物料采购月度汇总数据,板块公司:{},删除了{}条数据", year, month, bkgs, update);
|
||||
|
||||
// 2. 计算总记录数用于分页
|
||||
String countSql = "SELECT COUNT(1) AS total FROM BO_EU_DWD_ORDER_RKD_HZ " +
|
||||
String countSql = "SELECT COUNT(1) AS total FROM " + BO_EU_DWD_ORDER_RKD_HZ + " " +
|
||||
"WHERE BKGS = ? AND DATE(DJRQ) = ?";
|
||||
RowMap countResult = DBSql.getMap(countSql, bkgs, dateStr);
|
||||
int totalCount = countResult.getInt("total");
|
||||
@ -727,16 +812,9 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
int offset = page * pageSize;
|
||||
LOGGER.debug("正在处理第{}页入库数据,偏移量:{}", page + 1, offset);
|
||||
|
||||
// 分页查询入库数据
|
||||
// String querySql = "SELECT DJRQ, DJH, WLBM, WLMC, GGXH, SLGC, RKSL, JLDW, " +
|
||||
// "HSDJHYF, JEHYF, GYSNAME, CGDDH " +
|
||||
// "FROM BO_EU_DWD_ORDER_RKD_HZ " +
|
||||
// "WHERE BKGS = ? AND DATE(DJRQ) = ? " +
|
||||
// "ORDER BY DJH LIMIT ? OFFSET ?";
|
||||
|
||||
String querySql = "SELECT DJRQ, DJH, WLMC, WLBM, GGXH, SLGC, SUM(RKSL) AS RKSL, " +
|
||||
" JLDW, HSDJHYF, SUM(JEHYF) AS JEHYF, GYSNAME, CGDDH " +
|
||||
"FROM BO_EU_DWD_ORDER_RKD_HZ WHERE BKGS = ? AND DATE(DJRQ) = ? " +
|
||||
" FROM "+BO_EU_DWD_ORDER_RKD_HZ+" WHERE BKGS = ? AND DATE(DJRQ) = ? " +
|
||||
" GROUP BY DJRQ,DJH,WLMC "+
|
||||
" ORDER BY DJH LIMIT ? OFFSET ?";
|
||||
|
||||
@ -750,7 +828,21 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
detailBO.set("DATE", row.getDate("DJRQ")); // 入库日期
|
||||
detailBO.set("RKDH", row.getString("DJH")); // 入库单号
|
||||
detailBO.set("WLBM", row.getString("WLBM")); // 物料编码
|
||||
detailBO.set("WLMC", row.getString("WLMC")); // 物料名称
|
||||
String wlmc = row.getString("WLMC");
|
||||
if(("龙牌".equals(bkgs) || "梦牌".equals(bkgs) || "泰山石膏".equals(bkgs))
|
||||
&& (wlmc.contains("脱硫石膏") || wlmc.contains("护面纸"))){
|
||||
detailBO.set("WLMC", "脱硫石膏");
|
||||
} else if ("泰山石膏".equals(bkgs) && wlmc.contains("镀锌带钢")) {
|
||||
detailBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs))
|
||||
&& (wlmc.equals("轻钢镀锌带钢") || wlmc.equals("镀锌带钢"))) {
|
||||
detailBO.set("WLMC", "镀锌带钢");
|
||||
} else if (("泰山石膏".equals(bkgs) || "龙牌".equals(bkgs) || "梦牌".equals(bkgs)) && wlmc.contains("乳液")) {
|
||||
continue;
|
||||
}else {
|
||||
detailBO.set("WLMC", wlmc);
|
||||
}
|
||||
// detailBO.set("WLMC", ); // 物料名称
|
||||
detailBO.set("GGXH", row.getString("GGXH")); // 规格型号
|
||||
detailBO.set("GC", row.getString("SLGC")); // 收料工厂
|
||||
detailBO.set("RKSL", row.getDouble("RKSL")); // 入库数量
|
||||
|
||||
@ -393,6 +393,7 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
public int processAndInsertData(List<RowMap> sourceData,
|
||||
List<BO> mappings, String targetTable) {
|
||||
String bkgs = "";
|
||||
Set<String> bkgsSet = null;
|
||||
if (sourceData.isEmpty()) {
|
||||
LOGGER.info("没有需要同步的数据");
|
||||
return 0;
|
||||
@ -409,7 +410,6 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
try {
|
||||
// 字段映射转换
|
||||
BO targetData = convertFields(record, mappings);
|
||||
bkgs = targetData.getString("BKGS");
|
||||
batchList.add(targetData);
|
||||
|
||||
// 批量插入条件:达到批处理大小或最后一条
|
||||
@ -417,6 +417,7 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
// 使用管理员权限批量插入
|
||||
SDK.getBOAPI().createDataBO(targetTable, batchList, UserContext.fromUID("admin"));
|
||||
successCount += batchList.size();
|
||||
bkgsSet = sourceData.stream().map(o->o.getString("BKGS")).distinct().collect(Collectors.toSet());
|
||||
batchList.clear(); // 清空批次
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -424,7 +425,8 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
}
|
||||
}
|
||||
// 增加详细日志输出:共处理多少条,成功同步多少条
|
||||
LOGGER.info("同步板块为:{},落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs = bkgsSet.toArray().toString();
|
||||
LOGGER.info("同步板块为:{};落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs,targetTable,processedCount, successCount, targetTable);
|
||||
return successCount;
|
||||
}
|
||||
@ -558,6 +560,8 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
hzb = "BO_EU_DWD_ORDER_YFD_HZ";
|
||||
} else if ("库存".equals(tablename)) {
|
||||
hzb = "BO_EU_DWD_ORDER_KC_HZ";
|
||||
} else if ("物流表".equals(tablename)) {
|
||||
hzb = "BO_EU_CG_WLD_HZ";
|
||||
} else {
|
||||
hzb = "BO_EU_DWD_ORDER_RKD_HZ";
|
||||
}
|
||||
|
||||
@ -421,13 +421,13 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
|
||||
int lastYear = year - 1;
|
||||
int lastYearMonth = month; // 去年同月
|
||||
|
||||
// 处理石膏板数据 - 当年1月到当前月
|
||||
// 处理石膏板数据 - 当年当前月
|
||||
saveRevenueYearData(yearMonth, "石膏板",
|
||||
getRevenueToMonth(year, month, "石膏板", bkgs),
|
||||
getRevenueToMonth(lastYear, lastYearMonth, "石膏板", bkgs),
|
||||
bkgs);
|
||||
|
||||
// 处理轻钢龙骨数据 - 当年1月到当前月
|
||||
// 处理轻钢龙骨数据 - 当年当前月
|
||||
saveRevenueYearData(yearMonth, "轻钢龙骨",
|
||||
getRevenueToMonth(year, month, "轻钢龙骨", bkgs),
|
||||
getRevenueToMonth(lastYear, lastYearMonth, "轻钢龙骨", bkgs),
|
||||
@ -619,7 +619,8 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
|
||||
private BigDecimal getRevenueToMonth(int year, int month, String category, String bkgs) {
|
||||
String sql = "SELECT SUM(SSJERMB) AS revenue " +
|
||||
"FROM " + SALES_DETAIL_TABLE + " " +
|
||||
"WHERE YEAR(DZRQ) = '"+year+"' AND MONTH(DZRQ) BETWEEN 1 AND '"+month+"' AND LB_1 LIKE '%"+category+"%' AND BKGS = '"+bkgs+"'"+
|
||||
// "WHERE YEAR(DZRQ) = '"+year+"' AND MONTH(DZRQ) BETWEEN 1 AND '"+month+"' AND LB_1 LIKE '%"+category+"%' AND BKGS = '"+bkgs+"'"+
|
||||
"WHERE YEAR(DZRQ) = '"+year+"' AND MONTH(DZRQ) = '"+month+"' AND LB_1 LIKE '%"+category+"%' AND BKGS = '"+bkgs+"'"+
|
||||
"AND (SQ LIKE '%新疆%' OR SQ LIKE '%海南%' OR SQ LIKE '%西藏%')"; // 模糊查询
|
||||
double value = DBSql.getDouble(sql, "revenue");
|
||||
return BigDecimal.valueOf(value);
|
||||
@ -646,7 +647,15 @@ public class SaleDataSummaryServiceImpl implements DataSummaryService {
|
||||
String field = "";
|
||||
String sql = "";
|
||||
if (bkgs.contains("泰山")){
|
||||
field = "sales".equals(dataType) ? "SUM(XSSL)/10000" : "SUM(SSJERMB)";
|
||||
// field = "sales".equals(dataType) ? "SUM(XSSL)/10000" : "SUM(SSJERMB)";
|
||||
// field = "轻钢龙骨".equals(productType) ? "SUM(ZSSL)" : "SUM(SSJERMB)";
|
||||
if ("sales".equals(dataType) && "轻钢龙骨".equals(productType)){
|
||||
field = "SUM(ZSSL)";
|
||||
} else if ("sales".equals(dataType) && "石膏板".equals(productType)) {
|
||||
field = "SUM(XSSL)/10000";
|
||||
} else if ("revenue".equals(dataType)) {
|
||||
field = "SUM(SSJERMB)";
|
||||
}
|
||||
sql = "SELECT LB_2 AS brand, " + field + " AS value " +
|
||||
"FROM " + SALES_DETAIL_TABLE + " " +
|
||||
"WHERE YEAR(DZRQ) = ? AND MONTH(DZRQ) = ? AND LB_1 = ? AND BKGS = ? " +
|
||||
|
||||
@ -424,6 +424,7 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
public int processAndInsertData(List<RowMap> sourceData,
|
||||
List<BO> mappings, String targetTable) {
|
||||
String bkgs = "";
|
||||
Set<String> bkgsSet = null;
|
||||
if (sourceData.isEmpty()) {
|
||||
LOGGER.info("没有需要同步的数据");
|
||||
return 0;
|
||||
@ -440,7 +441,6 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
try {
|
||||
// 字段映射转换
|
||||
BO targetData = convertFields(record, mappings);
|
||||
bkgs = targetData.getString("BKGS");
|
||||
batchList.add(targetData);
|
||||
|
||||
// 批量插入条件:达到批处理大小或最后一条
|
||||
@ -448,6 +448,7 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
// 使用管理员权限批量插入
|
||||
SDK.getBOAPI().createDataBO(targetTable, batchList, UserContext.fromUID("admin"));
|
||||
successCount += batchList.size();
|
||||
bkgsSet = sourceData.stream().map(o->o.getString("BKGS")).distinct().collect(Collectors.toSet());
|
||||
batchList.clear(); // 清空批次
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -455,7 +456,8 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
}
|
||||
}
|
||||
// 增加详细日志输出:共处理多少条,成功同步多少条
|
||||
LOGGER.info("同步板块为:{},落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs = bkgsSet.toArray().toString();
|
||||
LOGGER.info("同步板块为:{};落地表为:{},本次处理{}条数据,成功同步{}条数据到表[{}]",
|
||||
bkgs,targetTable,processedCount, successCount, targetTable);
|
||||
return successCount;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user