1、应收数据分组查询
2、防水涂料计算 3、运营管理部回填 4、9宫格增加sql
This commit is contained in:
parent
af0c5cb8af
commit
490e2efb43
Binary file not shown.
Binary file not shown.
@ -8,9 +8,13 @@ import com.actionsoft.bpms.util.DBSql;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName: NineGridCountJob
|
||||
@ -19,6 +23,7 @@ import java.time.format.DateTimeFormatter;
|
||||
* @Blog: https://
|
||||
*/
|
||||
public class NineGridCountJob implements IJob {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(NineGridCountJob.class);
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
LocalDate now = LocalDate.now();
|
||||
@ -26,6 +31,13 @@ public class NineGridCountJob implements IJob {
|
||||
String nowYearMonthStr = now.format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
||||
LocalDate nowYearFirstDay = now.withDayOfYear(1);
|
||||
String nowYearFirstDayStr = nowYearFirstDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||
LOGGER.info("nowYearMonthStr:{},nowYearFirstDayStr:{}",nowYearMonthStr,nowYearFirstDayStr);
|
||||
//先删除数据
|
||||
BO boEuOaNineGrid = SDK.getBOAPI().query("BO_EU_OA_NINE_GRID").addQuery("YEARMONTH =", nowYearMonthStr).detail();
|
||||
if (boEuOaNineGrid!=null){
|
||||
SDK.getBOAPI().removeByBindId("BO_EU_OA_NINE_GRID",boEuOaNineGrid.getBindId());
|
||||
}
|
||||
|
||||
BO bo = new BO();
|
||||
bo.set("YEARMONTH",nowYearMonthStr);
|
||||
//查询销售数据
|
||||
@ -64,6 +76,7 @@ public class NineGridCountJob implements IJob {
|
||||
" (select SUM(`BUDGETTARGET`) AS BUDGETTARGET from BO_EU_ANNUAL_BUDGET WHERE YEAR = '" + year + "') mb on 1=1");
|
||||
bo.set("ZB4",yswcl.getString("yewcl"));//预算完成率
|
||||
String lastMonth = now.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
||||
LOGGER.info("lastMonth:{}",lastMonth);
|
||||
RowMap cl = DBSql.getMap("SELECT YEARS_MONTH," +
|
||||
" MAX(CASE WHEN PRODEUCT = '石膏板' THEN YTD END) AS SGBYTD," +
|
||||
" MAX(CASE WHEN PRODEUCT = '轻钢龙骨' THEN YTD END) AS QGLGYTD" +
|
||||
@ -76,6 +89,18 @@ public class NineGridCountJob implements IJob {
|
||||
bo.set("ZB8",map.getString("steel_keel_avg_price"));// 龙骨均价
|
||||
bo.set("ZB9","");//总运费
|
||||
|
||||
List<RowMap> maps = DBSql.getMaps("SELECT SUM(a.YSYE) AS total_YSYE, a.BKGS, b.max_rq " +
|
||||
" FROM BO_EU_BNBM_DATALINKUP_XS_YSL a" +
|
||||
" INNER JOIN (" +
|
||||
" SELECT BKGS, MAX(RQ) as max_rq" +
|
||||
" FROM BO_EU_BNBM_DATALINKUP_XS_YSL" +
|
||||
" GROUP BY BKGS" +
|
||||
" ) b ON a.BKGS = b.BKGS AND a.RQ = b.max_rq" +
|
||||
" GROUP BY a.BKGS, b.max_rq");
|
||||
BigDecimal totalSum = maps.stream()
|
||||
.map(o -> (BigDecimal) o.get("total_YSYE"))
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
bo.set("ZB10",totalSum);//应收总额
|
||||
|
||||
//商旅总额
|
||||
String querySql_SL ="SELECT SUM(PRICESERVICETOTALFEE) AS PRICESERVICETOTALFEE_SUM FROM BO_EU_TRAVELMODULE_XFMX WHERE TRAVELTIME>=CONCAT(YEAR (CURDATE()),'-01-01')";
|
||||
|
||||
@ -89,13 +89,23 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
String bkgs = section.getBkgs();
|
||||
String sql = "SELECT QYGS, FCUSTNAME, SQ AS FPROVINCE, CS AS FCITY, QY AS FDISTRICT, XSZZ " +
|
||||
" FROM " + section.getYsdTable() + " WHERE QYGS IS NOT NULL AND FCUSTNAME IS NOT NULL GROUP BY FCUSTNAME,XSZZ";
|
||||
// if (bkgs.equals("北新防水")){
|
||||
// sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " +
|
||||
// "AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'";
|
||||
// }else {
|
||||
// sql += " AND F_SFNBJY ='是'";
|
||||
// }
|
||||
if (bkgs.equals("北新防水")){
|
||||
sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " +
|
||||
"AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'";
|
||||
}else {
|
||||
sql += " AND F_SFNBJY ='否'";
|
||||
}
|
||||
List<RowMap> customerMaps = DBSql.getMaps(sql);
|
||||
// List<RowMap> customerMaps = new ArrayList<>();
|
||||
// HashMap<String, Object> hashMap = new HashMap<>();
|
||||
// hashMap.put("QYGS","北方区域公司");
|
||||
// hashMap.put("FCUSTNAME","大连红太阳防水保温工程有限公司");
|
||||
// hashMap.put("FPROVINCE","辽宁省");
|
||||
// hashMap.put("FCITY","大连市");
|
||||
// hashMap.put("FDISTRICT","");
|
||||
// hashMap.put("XSZZ","北新禹王防水科技集团有限公司");
|
||||
// RowMap map = new RowMap(hashMap);
|
||||
// customerMaps.add(map);
|
||||
|
||||
if (customerMaps == null || customerMaps.isEmpty()) {
|
||||
LOGGER.warn("{}板块未查询到销售组织和客户数据", sectionName);
|
||||
@ -145,6 +155,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
.map(row -> row.getString("FCUSTNAME"))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
// LOGGER.info("saleOrgUnits:{},custNames:{}",Arrays.toString(saleOrgUnits.toArray()),Arrays.toString(custNames.toArray()));
|
||||
|
||||
// 获取需要处理的所有月末日期
|
||||
List<LocalDate> monthEndDates = getMonthEndDates(startDate, endDate);
|
||||
@ -231,7 +242,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
*/
|
||||
private Map<String, BigDecimal> preloadAllData(Section section,
|
||||
List<String> saleOrgUnits, List<String> custNames, List<LocalDate> monthEndDates) {
|
||||
|
||||
LOGGER.info("预加载数据开始");
|
||||
Map<String, BigDecimal> results = new HashMap<>();
|
||||
|
||||
try {
|
||||
@ -292,17 +303,17 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
// .append(" 23:59:59')");
|
||||
// }
|
||||
|
||||
String bkgs = section.getBkgs();
|
||||
|
||||
String sql = "SELECT XSZZ, FCUSTNAME, DATE_FORMAT(DZRQ, '%Y-%m-%d') as BILL_DATE, SUM(SSJERMB) as TOTAL " +
|
||||
"FROM " + section.getYsdTable() +
|
||||
" FROM " + section.getYsdTable() +
|
||||
" WHERE XSZZ IN (" + inSaleOrgs + ") " +
|
||||
" AND FCUSTNAME IN (" + inCustNames + ") " +
|
||||
" AND (" + dateCondition + ") ";
|
||||
if (bkgs.equals("北新防水")){
|
||||
if (section.getBkgs().equals("北新防水")){
|
||||
sql += " AND XSZZ !='北新防水工程(辽宁)有限公司' " +
|
||||
"AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'";
|
||||
" AND XSZZ != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'";
|
||||
}else {
|
||||
sql += " AND F_SFNBJY ='是'";
|
||||
sql += " AND F_SFNBJY ='否'";
|
||||
}
|
||||
sql += " GROUP BY XSZZ, FCUSTNAME, DATE_FORMAT(DZRQ, '%Y-%m-%d')";
|
||||
// LOGGER.info("应收单数据sql = " + sql);
|
||||
@ -349,17 +360,16 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
// .append(" 23:59:59')");
|
||||
// }
|
||||
|
||||
String bkgs = section.getBkgs();
|
||||
String sql = "SELECT FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d') as BILL_DATE, SUM(FSALEAMOUNTRMB) as TOTAL " +
|
||||
"FROM " + section.getSkdTable() +
|
||||
" WHERE FSALEORGUNIT IN (" + inSaleOrgs + ") " +
|
||||
" AND FCUSTNAME IN (" + inCustNames + ") " +
|
||||
" AND (" + dateCondition + ") ";
|
||||
if (bkgs.equals("北新防水")){
|
||||
if (section.getBkgs().equals("北新防水")){
|
||||
sql += " AND FSALEORGUNIT !='北新防水工程(辽宁)有限公司' " +
|
||||
"AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'";
|
||||
"AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'";
|
||||
}else {
|
||||
sql += " AND F_SFNBJY ='是'";
|
||||
sql += " AND F_SFNBJY ='否'";
|
||||
}
|
||||
sql += " GROUP BY FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d')";
|
||||
|
||||
@ -407,17 +417,16 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
// .append(" 23:59:59')");
|
||||
// }
|
||||
|
||||
String bkgs = section.getBkgs();
|
||||
String sql = "SELECT FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d') as BILL_DATE, SUM(FSALEAMOUNTRMB) as TOTAL " +
|
||||
"FROM " + section.getSktkdTable() +
|
||||
" WHERE FSALEORGUNIT IN (" + inSaleOrgs + ") " +
|
||||
" AND FCUSTNAME IN (" + inCustNames + ") " +
|
||||
" AND (" + dateCondition + ") ";
|
||||
if (bkgs.equals("北新防水")){
|
||||
if (section.getBkgs().equals("北新防水")){
|
||||
sql += " AND FSALEORGUNIT !='北新防水工程(辽宁)有限公司' " +
|
||||
"AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='是'";
|
||||
"AND FSALEORGUNIT != '北新防水工程(四川)有限公司' AND F_SFNBJY ='否'";
|
||||
}else {
|
||||
sql += " AND F_SFNBJY ='是'";
|
||||
sql += " AND F_SFNBJY ='否'";
|
||||
}
|
||||
sql += " GROUP BY FSALEORGUNIT, FCUSTNAME, DATE_FORMAT(FBILLDATE, '%Y-%m-%d')";
|
||||
|
||||
@ -490,6 +499,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
|
||||
for (LocalDate monthEndDate : monthEndDates) {
|
||||
String dateKey = monthEndDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||
// LOGGER.info("dateKey:{}",dateKey);
|
||||
String fullKeyPrefix = keyPrefix + dateKey;
|
||||
|
||||
try {
|
||||
@ -499,6 +509,7 @@ public class WaterproofPaintAccountsReceivableJob implements IJob {
|
||||
|
||||
// 计算累计销售(本年年初到当前月末)
|
||||
LocalDate yearStart = monthEndDate.withDayOfYear(1);
|
||||
// LOGGER.info("yearStart:{}",yearStart);
|
||||
BigDecimal ljxs = calculatePeriodBalance(ysData, null, null, saleOrgUnit, custName, yearStart, monthEndDate);
|
||||
|
||||
// 计算累计还款(本年年初到当前月末)
|
||||
|
||||
@ -28,10 +28,17 @@ import java.util.stream.Collectors;
|
||||
public class YyglbDbHtJob implements IJob {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(YyglbDbHtJob.class);
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
public void execute(JobExecutionContext job) throws JobExecutionException {
|
||||
String param = SDK.getJobAPI().getJobParameter(job);
|
||||
int timeRange = StringUtils.isNotBlank(param) ? Integer.parseInt(param) : 0;
|
||||
|
||||
LocalDate now = LocalDate.now().minusMonths(1);
|
||||
int year = now.getYear();
|
||||
int monthValue = now.getMonthValue();
|
||||
if (timeRange!=0){
|
||||
LOGGER.info("timeRange:{}",timeRange);
|
||||
monthValue = timeRange;
|
||||
}
|
||||
//分别遍历龙牌梦牌泰山 护面纸、石膏、煤的对标数量
|
||||
//公式为:当月材料出库数量/当月石膏板折标产量
|
||||
//龙牌取数为:生产出库用量 护面纸取全部、脱硫石膏取物料编码为101115110000130、煤为包含煤、生物质、天然气、蒸汽
|
||||
@ -48,6 +55,7 @@ public class YyglbDbHtJob implements IJob {
|
||||
}catch (Exception e){
|
||||
LOGGER.error("删除运营_物料单耗出库表出错,删除范围为:{}-{}:e",year,monthValue,e.getLocalizedMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
for (String bkgs : bkgsArr) {
|
||||
List<RowMap> maps1 = DBSql.getMaps("SELECT FLZZ FROM BO_EU_BNBM_SCCK_HZ WHERE BKGS = '"+bkgs+"' " +
|
||||
@ -62,12 +70,17 @@ public class YyglbDbHtJob implements IJob {
|
||||
" AND FLZZ = '"+map2.getString("FLZZ")+"'";
|
||||
if (wlmckey.equals("石膏")){
|
||||
sql+=" AND WLMC IN ('脱硫石膏','磷石膏','天然石膏')";
|
||||
} else if (wlmckey.equals("护面纸")) {
|
||||
if (bkgs.equals("梦牌")) {
|
||||
System.out.println("梦牌护面纸的判断");
|
||||
sql += " AND WLMC LIKE '%" + wlmckey + "%' AND WLMC NOT LIKE '%覆膜%'";
|
||||
}else {
|
||||
sql+=" AND WLMC LIKE '%" + wlmckey + "%' ";
|
||||
}
|
||||
if (bkgs.equals("泰山石膏")){
|
||||
sql+="AND SCBM NOT LIKE '%穿孔板%' AND SCBM NOT LIKE '%装饰板%'";
|
||||
} else {
|
||||
sql+=" AND WLMC LIKE '%" + wlmckey + "%' ";
|
||||
}
|
||||
LOGGER.info("查询执行的sql:"+sql);
|
||||
RowMap map = DBSql.getMap(sql);
|
||||
bo.set(wlmcValue,map.getString("SFSL"));
|
||||
if (StringUtils.isNotBlank(map2.getString("FLZZ"))){
|
||||
@ -84,13 +97,26 @@ public class YyglbDbHtJob implements IJob {
|
||||
bo.set("YF",monthValue);
|
||||
bo.set("BKGS",bkgs);
|
||||
bo.set("BK",bkgs.equals("泰山石膏")?"泰山":bkgs);
|
||||
RowMap map1 = DBSql.getMap("SELECT SUM(ZBCL) AS zbcl FROM BO_EU_BNBM_SCRK_HZ " +
|
||||
String sql = "SELECT SUM(ZBCL) AS zbcl,SUM(RKSL) AS rksl FROM BO_EU_BNBM_SCRK_HZ " +
|
||||
" WHERE BKGS = '" + bkgs + "' AND YEAR = '" + year + "' AND MONTH = '" + monthValue + "'" +
|
||||
" AND WLMC LIKE '%石膏板%' AND KCZZ = '"+bo.getString("FLZZ")+"'");
|
||||
" AND KCZZ = '"+bo.getString("FLZZ")+"'";
|
||||
if (bkgs.equals("泰山石膏")){
|
||||
sql+=" AND WLMC LIKE '%石膏板%' AND SCBM NOT LIKE '%穿孔板%' AND SCBM NOT LIKE '%装饰板%'";
|
||||
}else if (bkgs.equals("龙牌")){
|
||||
sql+=" AND WLBM LIKE '3015%' AND WLFL != '装饰板'";
|
||||
} else if (bkgs.equals("梦牌")) {
|
||||
sql+=" AND (WLBM LIKE '3015%' OR WLBM LIKE '103071%') AND WLBM NOT LIKE '3015A%'";
|
||||
} else {
|
||||
sql+=" AND WLMC LIKE '%石膏板%'";
|
||||
}
|
||||
LOGGER.info("查询产量和折标产量的sql:{}",sql);
|
||||
RowMap map1 = DBSql.getMap(sql);
|
||||
if (map1!=null){
|
||||
bo.set("SGBZBCL",map1.getString("zbcl"));
|
||||
bo.set("SGBRKSL",map1.getString("rksl"));
|
||||
}else{
|
||||
bo.set("SGBZBCL",0);
|
||||
bo.set("SGBRKSL",0);
|
||||
}
|
||||
LOGGER.info("存储的值为:{}",bo.toJSONObject().toJSONString());
|
||||
boList.add(bo);
|
||||
@ -119,6 +145,7 @@ public class YyglbDbHtJob implements IJob {
|
||||
Double sg = 0.00;
|
||||
Double mei = 0.00;
|
||||
Double sgbzbcl = 0.00;
|
||||
Double sgbrksl = 0.00;
|
||||
|
||||
try {
|
||||
hmz = StringUtils.isNotBlank(bo.getString("HMZ")) ? Double.parseDouble(bo.getString("HMZ").trim()) : 0.00;
|
||||
@ -147,6 +174,12 @@ public class YyglbDbHtJob implements IJob {
|
||||
LOGGER.warn("SGBZBCL格式错误,使用默认值0.00,原始值: {}", bo.getString("SGBZBCL"));
|
||||
sgbzbcl = 0.00;
|
||||
}
|
||||
try {
|
||||
sgbrksl = StringUtils.isNotBlank(bo.getString("SGBRKSL")) ? Double.parseDouble(bo.getString("SGBRKSL").trim()) : 0.00;
|
||||
} catch (NumberFormatException e) {
|
||||
LOGGER.warn("SGBRKSL格式错误,使用默认值0.00,原始值: {}", bo.getString("SGBRKSL"));
|
||||
sgbrksl = 0.00;
|
||||
}
|
||||
|
||||
// 检查detail对象是否为空
|
||||
if (detail == null) {
|
||||
@ -162,15 +195,15 @@ public class YyglbDbHtJob implements IJob {
|
||||
LOGGER.warn("flzz或JC字段为空,使用空字符串");
|
||||
}
|
||||
|
||||
LOGGER.info("nf:{};yf:{};bk:{};jc:{};hmz:{};sg:{};mei:{};sgbzbcl:{}",
|
||||
nf, yf, bk, jcValue, hmz, sg, mei, sgbzbcl);
|
||||
LOGGER.info("nf:{};yf:{};bk:{};jc:{};hmz:{};sg:{};mei:{};sgbzbcl:{},sgbrksl:{}",
|
||||
nf, yf, bk, jcValue, hmz, sg, mei, sgbzbcl,sgbrksl);
|
||||
|
||||
if (sgbzbcl != null && sgbzbcl != 0.00) {
|
||||
// 安全处理hmz
|
||||
if (hmz != null && hmz != 0.00) {
|
||||
double result = (hmz*1000000) / sgbzbcl;
|
||||
double result = (hmz*1000000) / sgbrksl;
|
||||
detail.set("HMZ", result);
|
||||
LOGGER.debug("HMZ计算结果: {} / {} = {}", hmz, sgbzbcl, result);
|
||||
LOGGER.debug("HMZ计算结果: {} / {} = {}", hmz, sgbrksl, result);
|
||||
} else {
|
||||
detail.set("HMZ", 0.00);
|
||||
}
|
||||
|
||||
@ -277,8 +277,8 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
|
||||
for (int i = 0; i < timeRanges.size(); i++) {
|
||||
Date[] range = timeRanges.get(i);
|
||||
String startDate = simpleDateFormat2.format(range[0])+" 00:00:00";
|
||||
String endDate = simpleDateFormat2.format(range[1])+" 23:59:59";
|
||||
String startDate = simpleDateFormat2.format(range[0])+"";
|
||||
String endDate = simpleDateFormat2.format(range[1])+"";
|
||||
|
||||
LOGGER.info("正在处理第 {} 个时间区间: {} 至 {}", i + 1, startDate, endDate);
|
||||
if ("ORACLE".equalsIgnoreCase(DBname)) {
|
||||
@ -432,7 +432,7 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
||||
String querySql = "SELECT * FROM " + tableName +
|
||||
" WHERE " + conditionBuilder.toString();
|
||||
|
||||
LOGGER.debug("执行查询querySql: {}", querySql);
|
||||
LOGGER.info("执行查询querySql: {}", querySql);
|
||||
|
||||
List<RowMap> pageData;
|
||||
// 根据条件类型执行查询
|
||||
|
||||
@ -3,7 +3,6 @@ package com.awspaas.user.apps.bnbm.datalinkup.service.impl;
|
||||
import com.actionsoft.bpms.bo.engine.BO;
|
||||
import com.actionsoft.bpms.commons.database.DBUtils;
|
||||
import com.actionsoft.bpms.commons.database.RowMap;
|
||||
import com.actionsoft.bpms.commons.pagination.SQLPagination;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.bpms.util.DBSql;
|
||||
import com.actionsoft.bpms.util.UtilDate;
|
||||
@ -18,7 +17,6 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.sql.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
@ -1250,10 +1248,18 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
@Override
|
||||
public void querySourceDataYS(String ccId, String tableName, String timeField, Date startDated, Date endDated, String partitionField, List<BO> fieldMappings, String targetTable, String jezd) {
|
||||
// LOGGER.info("ccId:{},tableName:{},timeField:{},startDated:{},endDated:{},partitionField:{},fieldMappings:{},targetTable:{},jezd:{}",ccId,tableName,timeField,startDated,endDated,partitionField,Arrays.asList(fieldMappings.toArray()),targetTable,jezd);
|
||||
ArrayList<String> bggsArr = new ArrayList<>();
|
||||
String bindid = fieldMappings.get(0).getString("BINDID");
|
||||
BO sjgtpz = SDK.getBOAPI().query("BO_EU_BNBM_DATALINKUP_SJGTPZ").detailByBindId(bindid);
|
||||
String ssbk = sjgtpz.getString("SSBK");
|
||||
if (ssbk.equals("龙牌")){
|
||||
bggsArr.add("龙牌");
|
||||
bggsArr.add("梦牌");
|
||||
}else {
|
||||
bggsArr.add(ssbk);
|
||||
}
|
||||
int totalRows = 0; // 总查询行数
|
||||
int totalSuccess = 0; // 总成功插入行数
|
||||
int pageNo = 1;
|
||||
boolean hasMore;
|
||||
RDSAPI rdsapi = null;
|
||||
DBUtils.SUPPLY supply = null;
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
@ -1328,10 +1334,20 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
}
|
||||
|
||||
// 分页查询数据
|
||||
LOGGER.info("==================执行同步应收==============");
|
||||
Set<String> bkgsSet = new HashSet<>();
|
||||
// 遍历bggsArr,为每个分组条件执行查询
|
||||
for (String bggs : bggsArr) {
|
||||
LOGGER.info("正在处理板块公司: {}", bggs);
|
||||
int groupTotalRows = 0; // 当前分组总查询行数
|
||||
int groupTotalSuccess = 0; // 当前分组总成功插入行数
|
||||
int pageNo = 1;
|
||||
boolean hasMore;
|
||||
do {
|
||||
String startDate = simpleDateFormat2.format(startDated);
|
||||
String endDate = simpleDateFormat2.format(endDated);
|
||||
// 修改后的querySourceDataYS方法中的SQL查询部分
|
||||
|
||||
String querySql;
|
||||
if ("ORACLE".equalsIgnoreCase(DBname)) {
|
||||
querySql = "SELECT t1.* FROM " + tableName + " t1 " +
|
||||
@ -1339,6 +1355,7 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
" MAX(TO_DATE(" + timeField + ", 'YYYY-MM-DD')) AS max_date " +
|
||||
" FROM " + tableName + " WHERE " + conditionBuilder.toString() +
|
||||
" AND TO_DATE(" + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD') " +
|
||||
" AND BKGS = '" + bggs + "' " + // 添加分组条件
|
||||
" GROUP BY TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH')) t2 " +
|
||||
" ON TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') = t2.max_date " +
|
||||
" WHERE " + conditionBuilder.toString() +
|
||||
@ -1347,11 +1364,13 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
querySql = "SELECT t1.* FROM " + tableName + " t1 " +
|
||||
" JOIN (SELECT DATE_TRUNC('MONTH', " + timeField + "::DATE) AS month_start, " +
|
||||
" MAX(" + timeField + "::DATE) AS max_date " +
|
||||
" FROM " + tableName + " WHERE "+conditionBuilder.toString()+" AND "+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"' " +
|
||||
" FROM " + tableName + " WHERE " + conditionBuilder.toString() + " AND " + timeField + "::DATE BETWEEN '" + startDate + "' AND '" + endDate + "' " +
|
||||
" AND BKGS = '" + bggs + "' " + // 添加分组条件
|
||||
" GROUP BY DATE_TRUNC('MONTH', " + timeField + "::DATE)) t2 " +
|
||||
" ON t1." + timeField + "::DATE = t2.max_date " +
|
||||
" WHERE " +conditionBuilder.toString()+
|
||||
" AND t1."+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"'";
|
||||
" WHERE " + conditionBuilder.toString() +
|
||||
" AND t1." + timeField + "::DATE BETWEEN '" + startDate + "' AND '" + endDate + "'" +
|
||||
" AND t1.BKGS = '" + bggs + "'"; // 添加分组条件;
|
||||
} else if ("SQLSERVER".equalsIgnoreCase(DBname)) {
|
||||
querySql = "SELECT t1.* FROM " + tableName + " t1 " +
|
||||
" JOIN (SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0) AS month_start, " +
|
||||
@ -1361,7 +1380,8 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
" GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0)) t2 " +
|
||||
" ON CONVERT(DATE, t1." + timeField + ") = t2.max_date " +
|
||||
" WHERE " + conditionBuilder.toString() +
|
||||
" AND CONVERT(DATE, t1." + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "')";
|
||||
" AND CONVERT(DATE, t1." + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "')" +
|
||||
" AND t1.BKGS = '" + bggs + "'";
|
||||
} else {
|
||||
// 默认处理(如MySQL)
|
||||
querySql = "SELECT t1.* FROM " + tableName + " t1 " +
|
||||
@ -1369,10 +1389,12 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
" MAX(STR_TO_DATE(" + timeField + ", '%Y-%m-%d')) AS max_date " +
|
||||
" FROM " + tableName + " WHERE " + conditionBuilder.toString() +
|
||||
" AND STR_TO_DATE(" + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d') " +
|
||||
" AND BKGS = '" + bggs + "' " + // 添加分组条件
|
||||
" GROUP BY DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01')) t2 " +
|
||||
" ON STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') = t2.max_date " +
|
||||
" WHERE " + conditionBuilder.toString() +
|
||||
" AND STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d')";
|
||||
" AND STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d')" +
|
||||
" AND t1.BKGS = '" + bggs + "'"; // 添加分组条件
|
||||
}
|
||||
LOGGER.info("执行查询: {}", querySql);
|
||||
|
||||
@ -1385,14 +1407,28 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
|
||||
if (pageData != null && !pageData.isEmpty()) {
|
||||
int successCount = this.processAndInsertData(pageData, fieldMappings, targetTable);
|
||||
groupTotalRows += pageData.size();
|
||||
groupTotalSuccess += successCount;
|
||||
totalRows += pageData.size();
|
||||
totalSuccess += successCount;
|
||||
hasMore = pageData.size() == PAGE_SIZE;
|
||||
pageNo++;
|
||||
Set<String> bkgsSet2 = pageData.stream().map(o -> o.getString("BKGS")).collect(Collectors.toSet());
|
||||
if (bkgsSet2 != null) {
|
||||
for (String s : bkgsSet2) {
|
||||
bkgsSet.add(s);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
hasMore = false;
|
||||
}
|
||||
} while (hasMore);
|
||||
LOGGER.info("板块公司[{}]处理完成: 查询{}条数据,成功同步{}条数据",
|
||||
bggs, groupTotalRows, groupTotalSuccess);
|
||||
}
|
||||
String bkgs = bkgsSet.stream().collect(Collectors.joining(", "));
|
||||
LOGGER.info("同步板块为:{};落地表为:{}",
|
||||
bkgs,targetTable);
|
||||
|
||||
// 每天执行的任务:删除去年同期上一天的数据,新增去年同期当天的数据
|
||||
try {
|
||||
@ -1417,6 +1453,12 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
||||
int deletedCount = DBSql.update(deleteLastYearPreviousDaySql);
|
||||
LOGGER.info("已删除去年同期前一天({})的数据,删除了{}条数据", lastYearPreviousDayStr, deletedCount);
|
||||
|
||||
// 1. 删除去年同期当天的数据
|
||||
String deleteLastYearDaySql = "DELETE FROM " + targetTable +
|
||||
" WHERE RQ = '" + lastYearSameDayStr + "'";
|
||||
int deletedCount2 = DBSql.update(deleteLastYearPreviousDaySql);
|
||||
LOGGER.info("已删除去年同期当天({})的数据,删除了{}条数据", lastYearSameDayStr, deletedCount2);
|
||||
|
||||
// 2. 新增去年同期当天数据
|
||||
// 构建查询去年同期当天数据的SQL
|
||||
String lastYearQuerySql;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user