1、增加应收明细汇总方法
2、采购泰年月明细取值
This commit is contained in:
parent
6379f48756
commit
f06f0a8a0b
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -388,6 +388,7 @@ public class DataLinkUpController {
|
|||||||
LOGGER.info("汇总板块数据——采购的接口");
|
LOGGER.info("汇总板块数据——采购的接口");
|
||||||
}else {
|
}else {
|
||||||
LOGGER.error("{}当前表没有汇总表",ssyw);
|
LOGGER.error("{}当前表没有汇总表",ssyw);
|
||||||
|
return ro.err(ssyw+"当前表没有汇总表");
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGER.info("即将同步的数据:{}",plate);
|
LOGGER.info("即将同步的数据:{}",plate);
|
||||||
@ -437,7 +438,11 @@ public class DataLinkUpController {
|
|||||||
// 根据时间范围增加数据分页查询数据存储到BO_EU_BNBM_DATALINKUP_XS_XSL_HZ
|
// 根据时间范围增加数据分页查询数据存储到BO_EU_BNBM_DATALINKUP_XS_XSL_HZ
|
||||||
// 按时间范围分页迁移数据到汇总表
|
// 按时间范围分页迁移数据到汇总表
|
||||||
long summarizeStartTime = System.currentTimeMillis();
|
long summarizeStartTime = System.currentTimeMillis();
|
||||||
dataSyncService.summarizeScopeData(targetTable, startDate, endDate, targetTimeField, hzb);
|
// if (tablename.equals("应收表")){
|
||||||
|
// dataSyncService.summarizeScopeDataYs(targetTable, startDate, endDate, targetTimeField, hzb);
|
||||||
|
// }else {
|
||||||
|
dataSyncService.summarizeScopeData(targetTable, startDate, endDate, targetTimeField, hzb);
|
||||||
|
// }
|
||||||
LOGGER.info("范围数据汇总完成,耗时:{}ms", System.currentTimeMillis() - summarizeStartTime);
|
LOGGER.info("范围数据汇总完成,耗时:{}ms", System.currentTimeMillis() - summarizeStartTime);
|
||||||
}
|
}
|
||||||
LOGGER.info("【完成处理】配置项[{}],板块:{},总耗时:{}ms",
|
LOGGER.info("【完成处理】配置项[{}],板块:{},总耗时:{}ms",
|
||||||
|
|||||||
@ -100,4 +100,13 @@ public interface DataSyncService {
|
|||||||
* @return 转换后的BO对象
|
* @return 转换后的BO对象
|
||||||
*/
|
*/
|
||||||
BO convertFields(RowMap source, List<BO> mappings);
|
BO convertFields(RowMap source, List<BO> mappings);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应收将范围内数据汇总
|
||||||
|
* @param targetTable
|
||||||
|
* @param startDate
|
||||||
|
* @param endDate
|
||||||
|
* @param targetTimeField
|
||||||
|
*/
|
||||||
|
void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb);
|
||||||
}
|
}
|
||||||
@ -797,4 +797,9 @@ public class ProductionDataSyncServiceImpl implements DataSyncService {
|
|||||||
hzb, PAGE_SIZE, e.getMessage(), e);
|
hzb, PAGE_SIZE, e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -169,29 +169,28 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
|||||||
detailBO.set("WLMC", wlmc); // 物料名称
|
detailBO.set("WLMC", wlmc); // 物料名称
|
||||||
detailBO.set("GGXH", row.getString("GGXH")); // 规格型号
|
detailBO.set("GGXH", row.getString("GGXH")); // 规格型号
|
||||||
detailBO.set("GC", row.getString("SLGC")); // 收料工厂
|
detailBO.set("GC", row.getString("SLGC")); // 收料工厂
|
||||||
|
|
||||||
// 处理入库数量,防止空值
|
// 处理入库数量,防止空值
|
||||||
Double rksl = row.getDouble("RKSL");
|
Double rksl = row.getDouble("RKSL");
|
||||||
detailBO.set("RKSL", rksl != null ? rksl : 0.0); // 入库数量
|
detailBO.set("RKSL", rksl != null ? rksl : 0.0); // 入库数量
|
||||||
|
|
||||||
detailBO.set("DW", row.getString("JLDW")); // 单位
|
detailBO.set("DW", row.getString("JLDW")); // 单位
|
||||||
|
|
||||||
// 处理单价和金额,添加除零检查
|
// 处理单价和金额,添加除零检查
|
||||||
Double jshjhyf = row.getDouble("JSHJHYF");
|
|
||||||
double rkdj = 0.0;
|
|
||||||
if (jshjhyf != null && jshjhyf != 0 && rksl != null && rksl != 0) {
|
|
||||||
rkdj = jshjhyf / rksl;
|
|
||||||
}
|
|
||||||
detailBO.set("RKDJ", rkdj); // 入库单价
|
|
||||||
|
|
||||||
if ("泰山石膏".equals(bkgs)) {
|
if ("泰山石膏".equals(bkgs)) {
|
||||||
Double dhje = row.getDouble("DHJE");
|
Double dhje = row.getDouble("DHJE");
|
||||||
detailBO.set("RKJE", dhje != null ? dhje : 0.0); // 入库金额
|
double rkdj = 0.0;
|
||||||
|
if (dhje != null && dhje != 0 && rksl != null && rksl != 0) {
|
||||||
|
rkdj = dhje / rksl;
|
||||||
|
}
|
||||||
|
detailBO.set("RKDJ", rkdj); // 入库单价
|
||||||
|
detailBO.set("RKJE", dhje != null ? dhje : 0.0); // 入库单价
|
||||||
} else {
|
} else {
|
||||||
// Double jshjhyf = row.getDouble("JSHJHYF");
|
Double jshjhyf = row.getDouble("JSHJHYF");
|
||||||
|
double rkdj = 0.0;
|
||||||
|
if (jshjhyf != null && jshjhyf != 0 && rksl != null && rksl != 0) {
|
||||||
|
rkdj = jshjhyf / rksl;
|
||||||
|
}
|
||||||
|
detailBO.set("RKDJ", rkdj); // 入库单价
|
||||||
detailBO.set("RKJE", jshjhyf != null ? jshjhyf : 0.0); // 入库金额
|
detailBO.set("RKJE", jshjhyf != null ? jshjhyf : 0.0); // 入库金额
|
||||||
}
|
}
|
||||||
|
|
||||||
detailBO.set("GYS", row.getString("GYSNAME")); // 供应商
|
detailBO.set("GYS", row.getString("GYSNAME")); // 供应商
|
||||||
detailBO.set("DDBH", row.getString("CGDDH")); // 订单编号
|
detailBO.set("DDBH", row.getString("CGDDH")); // 订单编号
|
||||||
detailBO.set("KCS", 0.00); // 库存数(默认为0,需后续计算)
|
detailBO.set("KCS", 0.00); // 库存数(默认为0,需后续计算)
|
||||||
|
|||||||
@ -895,6 +895,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
|||||||
&& !allowedSuppliers.contains(bkgs)) {
|
&& !allowedSuppliers.contains(bkgs)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (bkgs.equals("北新嘉宝莉")){
|
||||||
|
Double thsl = bo.get("THSL",Double.class);
|
||||||
|
double thsl2 = thsl!=null?thsl:0.0;
|
||||||
|
Double rkslDou = bo.get("RKSL", Double.class);
|
||||||
|
double rkslDou2 = rkslDou!=null?rkslDou:0.0;
|
||||||
|
if (rkslDou2==0.0){
|
||||||
|
bo.set("RKSL",rkslDou2-thsl2);
|
||||||
|
}else {
|
||||||
|
bo.set("RKSL",rkslDou2-thsl2);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bos.add(bo);
|
bos.add(bo);
|
||||||
}
|
}
|
||||||
@ -912,4 +923,9 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -868,4 +868,140 @@ public class SaleDataSyncServiceImpl implements DataSyncService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 汇总各板块销售数据汇总
|
||||||
|
* @param targetTable 落地表字段
|
||||||
|
* @param startDated 开始时间
|
||||||
|
* @param endDated 结束时间
|
||||||
|
* @param targetTimeField 时间范围字段
|
||||||
|
* @param hzb 汇总表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void summarizeScopeDataYs(String targetTable, Date startDated, Date endDated, String targetTimeField, String hzb) {
|
||||||
|
int pageNo = 1;
|
||||||
|
boolean hasMore;
|
||||||
|
String pageSql = "";
|
||||||
|
List<RowMap> pageData = null;
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
String startDate = "";
|
||||||
|
String endDate = "";
|
||||||
|
// 查询梦牌区域
|
||||||
|
List<BO> mpqyList = SDK.getBOAPI().query("BO_EU_DATALINKUP_QYGSED").addQuery("BKGS = ", "梦牌").list();
|
||||||
|
// 查询龙牌区域
|
||||||
|
List<BO> lpqyList = SDK.getBOAPI().query("BO_EU_QYGX").list();
|
||||||
|
try {
|
||||||
|
do {
|
||||||
|
// 构建查询每月最大日期的SQL
|
||||||
|
String maxDateSubQuery = "SELECT MAX(DATE(" + targetTimeField + ")) as max_date " +
|
||||||
|
"FROM " + targetTable +
|
||||||
|
" WHERE DATE_FORMAT(" + targetTimeField + ", '%Y-%m') = " +
|
||||||
|
"DATE_FORMAT(t." + targetTimeField + ", '%Y-%m')";
|
||||||
|
if (startDated == null || endDated == null) {
|
||||||
|
pageSql = "SELECT t.* FROM " + targetTable + " t " +
|
||||||
|
"WHERE DATE(t." + targetTimeField + ") = (" + maxDateSubQuery + ") " +
|
||||||
|
"ORDER BY t.ID LIMIT " + PAGE_SIZE + " OFFSET " + (pageNo - 1) * PAGE_SIZE;
|
||||||
|
pageData = DBSql.getMaps(pageSql);
|
||||||
|
} else {
|
||||||
|
startDate = simpleDateFormat.format(startDated);
|
||||||
|
endDate = simpleDateFormat.format(endDated);
|
||||||
|
pageSql = "SELECT t.* FROM " + targetTable + " t " +
|
||||||
|
"WHERE t." + targetTimeField + " BETWEEN '" + startDate + "' AND '" + endDate + "' " +
|
||||||
|
"AND DATE(t." + targetTimeField + ") = (" + maxDateSubQuery + ") " +
|
||||||
|
"ORDER BY t.ID LIMIT " + PAGE_SIZE + " OFFSET " + (pageNo - 1) * PAGE_SIZE;
|
||||||
|
LOGGER.info("执行查询的sql:{}", pageSql);
|
||||||
|
pageData = DBSql.getMaps(pageSql);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pageData.isEmpty()) break;
|
||||||
|
|
||||||
|
List<BO> bos = new ArrayList<>();
|
||||||
|
for (RowMap map : pageData) {
|
||||||
|
BO bo = new BO();
|
||||||
|
if ("梦牌".equals(map.getString("BKGS")) && "梦牌新材料(平邑)有限公司".equals(map.getString("XSZZ"))){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ("北新防水".equals(map.getString("BKGS")) && "否".equals(map.getString("F_SFNBJY"))
|
||||||
|
&& !map.getString("XSZZ").equals("北新防水工程(辽宁)有限公司")
|
||||||
|
&& !map.getString("XSZZ").equals("北新防水工程(四川)有限公司")){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 复制所有字段(排除系统字段)
|
||||||
|
for (String key : map.keySet()) {
|
||||||
|
if (!key.equalsIgnoreCase("ID") &&
|
||||||
|
!key.equalsIgnoreCase("ORGID") &&
|
||||||
|
!key.equalsIgnoreCase("CREATEDATE") &&
|
||||||
|
!key.equalsIgnoreCase("CREATEUSER") &&
|
||||||
|
!key.equalsIgnoreCase("UPDATEDATE") &&
|
||||||
|
!key.equalsIgnoreCase("UPDATEUSER") &&
|
||||||
|
!key.equalsIgnoreCase("ISEND") &&
|
||||||
|
!key.equalsIgnoreCase("BINDID")) {
|
||||||
|
if (StringUtils.isNotBlank(targetTimeField)) {
|
||||||
|
String targetTimeField1 = map.getString(targetTimeField);
|
||||||
|
Date parse = UtilDate.parse(targetTimeField1);
|
||||||
|
int year = UtilDate.getYear(parse);
|
||||||
|
String monthFormat = UtilDate.monthFormat(parse);
|
||||||
|
int day = UtilDate.getDay(parse);
|
||||||
|
bo.set("YEARMONTH", year + monthFormat);
|
||||||
|
bo.set("YEAR", year);
|
||||||
|
bo.set("MONTH", monthFormat);
|
||||||
|
bo.set("DAY", day);
|
||||||
|
}
|
||||||
|
bo.set(key, map.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//销售汇总表修改区域公司
|
||||||
|
if ("梦牌".equals(bo.getString("BKGS"))) {
|
||||||
|
String cs = StringUtils.isBlank(bo.getString("CS"))?"":bo.getString("CS");
|
||||||
|
String sq = StringUtils.isBlank(bo.getString("SQ"))?"":bo.getString("SQ");
|
||||||
|
boolean found = false; // 标记是否找到匹配
|
||||||
|
for (BO bo1 : mpqyList) {
|
||||||
|
String ss = bo1.getString("SS");
|
||||||
|
if (ss.contains(cs)) {
|
||||||
|
bo.set("QYGS", bo1.getString("QYGS"));
|
||||||
|
found = true;
|
||||||
|
break; // 找到后立即跳出循环
|
||||||
|
} else if (ss.contains(sq)) {
|
||||||
|
bo.set("QYGS", bo1.getString("QYGS"));
|
||||||
|
found = true;
|
||||||
|
break; // 找到后立即跳出循环
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
bo.set("QYGS", "其他"); // 循环结束后仍未找到则设為"其他"
|
||||||
|
}
|
||||||
|
}else if ("龙牌".equals(bo.getString("BKGS"))){
|
||||||
|
String xszz = StringUtils.isBlank(bo.getString("XSZZ"))?"":bo.getString("XSZZ");
|
||||||
|
boolean found = false; // 标记是否找到匹配
|
||||||
|
// 修改龙牌的区域公司
|
||||||
|
for (BO bo1 : lpqyList) {
|
||||||
|
String swfb = bo1.getString("SWFB");
|
||||||
|
String[] split = swfb.split(",");
|
||||||
|
String qygs = bo1.getString("QYGS");
|
||||||
|
for (String s : split) {
|
||||||
|
if (xszz.equals(s)){
|
||||||
|
bo.set("QYGS",qygs);
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
bo.set("QYGS", "其他"); // 循环结束后仍未找到则设為"其他"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bos.add(bo);
|
||||||
|
}
|
||||||
|
|
||||||
|
SDK.getBOAPI().createDataBO(hzb, bos, UserContext.fromUID("admin"));
|
||||||
|
LOGGER.info("已迁移{}条数据到汇总表(页号: {},时间范围: {} - {})",
|
||||||
|
bos.size(), pageNo, startDate, endDate);
|
||||||
|
|
||||||
|
hasMore = pageData.size() == PAGE_SIZE;
|
||||||
|
pageNo++;
|
||||||
|
} while (hasMore);
|
||||||
|
}catch (Exception e){
|
||||||
|
LOGGER.error("汇总数据失败 [汇总表={}, 第几页={}]: {}",
|
||||||
|
hzb, PAGE_SIZE, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user