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("汇总板块数据——采购的接口");
|
||||
}else {
|
||||
LOGGER.error("{}当前表没有汇总表",ssyw);
|
||||
return ro.err(ssyw+"当前表没有汇总表");
|
||||
}
|
||||
|
||||
LOGGER.info("即将同步的数据:{}",plate);
|
||||
@ -437,7 +438,11 @@ public class DataLinkUpController {
|
||||
// 根据时间范围增加数据分页查询数据存储到BO_EU_BNBM_DATALINKUP_XS_XSL_HZ
|
||||
// 按时间范围分页迁移数据到汇总表
|
||||
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",
|
||||
|
||||
@ -100,4 +100,13 @@ public interface DataSyncService {
|
||||
* @return 转换后的BO对象
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@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("GGXH", row.getString("GGXH")); // 规格型号
|
||||
detailBO.set("GC", row.getString("SLGC")); // 收料工厂
|
||||
|
||||
// 处理入库数量,防止空值
|
||||
Double rksl = row.getDouble("RKSL");
|
||||
detailBO.set("RKSL", rksl != null ? rksl : 0.0); // 入库数量
|
||||
|
||||
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)) {
|
||||
Double dhje = row.getDouble("DHJE");
|
||||
detailBO.set("RKJE", dhje != null ? dhje : 0.0); // 入库金额
|
||||
Double dhje = row.getDouble("DHJE");
|
||||
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 {
|
||||
// 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("GYS", row.getString("GYSNAME")); // 供应商
|
||||
detailBO.set("DDBH", row.getString("CGDDH")); // 订单编号
|
||||
detailBO.set("KCS", 0.00); // 库存数(默认为0,需后续计算)
|
||||
|
||||
@ -895,6 +895,17 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
&& !allowedSuppliers.contains(bkgs)) {
|
||||
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);
|
||||
}
|
||||
@ -912,4 +923,9 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
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