1、泰山销售数据石膏板取折算数量修改

2、销售数据取当月累计,不取当前累计
3、采购汇总取值修改为取采购入库单
This commit is contained in:
llllon 2025-08-27 15:54:22 +08:00
parent afc1ad251b
commit b207a61f74
14 changed files with 186 additions and 74 deletions

View File

@ -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";
}

View File

@ -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;
}

View File

@ -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,33 +492,45 @@ 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 ? " +
"GROUP BY WLMC";
// 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 ? " +
"GROUP BY WLMC";
// 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 + "%");
}
// 去年同期数据
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 ? " +
"GROUP BY WLMC";
// 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,18 +812,11 @@ 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) = ? " +
"GROUP BY DJRQ,DJH,WLMC "+
"ORDER BY DJH LIMIT ? OFFSET ?";
" JLDW, HSDJHYF, SUM(JEHYF) AS JEHYF, GYSNAME, CGDDH " +
" FROM "+BO_EU_DWD_ORDER_RKD_HZ+" WHERE BKGS = ? AND DATE(DJRQ) = ? " +
" GROUP BY DJRQ,DJH,WLMC "+
" ORDER BY DJH LIMIT ? OFFSET ?";
List<RowMap> pageData = DBSql.getMaps(querySql, bkgs, dateStr, pageSize, offset);
LOGGER.debug("第{}页查询到{}条记录", page + 1, pageData.size());
@ -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")); // 入库数量

View File

@ -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";
}

View File

@ -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 = ? " +

View File

@ -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;
}