1、物料分类逻辑增加其他6类,转移到在详情汇总时进行物料分类处理
This commit is contained in:
parent
7b1ed3e1d5
commit
4f39842877
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -137,6 +137,7 @@ public class DataLinkUpController {
|
||||
String targetTable = config.getString("LDB");
|
||||
String partitionField = config.getString("FQBZD");
|
||||
String tableName = config.getString("TBB");
|
||||
String tablename = config.getString("TABLENAME");
|
||||
String bkgs = config.getString("SSBK");
|
||||
|
||||
List<BO> fieldMappings = SDK.getBOAPI()
|
||||
@ -144,6 +145,36 @@ public class DataLinkUpController {
|
||||
.addQuery("BINDID =", config.optString("_BINDID"))
|
||||
.list();
|
||||
|
||||
// 判断库存同步明细和汇总明细,如果是月初第一天就将上月最后一天数据存储到快照表
|
||||
if("库存".equals(tablename)){
|
||||
if (LocalDate.now().getDayOfMonth() == 1) {
|
||||
LOGGER.info("当天为1号,将前一天同步的全部数据存为快照,在删除同步新的全量库存数据");
|
||||
// 执行同步逻辑
|
||||
List<BO> list = SDK.getBOAPI().query(targetTable).list();
|
||||
int pageSize = 1000;
|
||||
int total = list.size();
|
||||
|
||||
// 分页处理并批量插入
|
||||
for (int start = 0; start < total; start += pageSize) {
|
||||
int end = Math.min(start + pageSize, total);
|
||||
List<BO> subList = list.subList(start, end);
|
||||
|
||||
// 将子列表转换为目标BO的实例(如果需要字段映射,需在此处实现)
|
||||
ArrayList<BO> boList = new ArrayList<>();
|
||||
for (BO sourceBo : subList) {
|
||||
// 这里应根据实际字段映射关系复制属性
|
||||
// 例如:targetBo.set("fieldName", sourceBo.get("fieldName"));
|
||||
boList.add(sourceBo);
|
||||
}
|
||||
|
||||
// 批量插入当前分页数据
|
||||
if (!boList.isEmpty()) {
|
||||
SDK.getBOAPI().createDataBO("BO_EU_CG_KC_YDKBB", boList, UserContext.fromUID("admin"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 删除目标表数据(根据时间字段是否为空决定删除范围)
|
||||
if (timeField == null || timeField.isEmpty()) {
|
||||
// 全量删除
|
||||
|
||||
@ -7,6 +7,7 @@ import com.actionsoft.bpms.util.DBSql;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.entity.DateRange;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.service.DataSummaryService;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.util.PurchaseUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -204,25 +205,11 @@ 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) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算日度维度数据
|
||||
*/
|
||||
@ -599,26 +586,7 @@ public class PurchaseDataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
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();
|
||||
// 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"));
|
||||
double avgPrice = currentMonthRow.getDouble("totalQuantity") != 0 ?
|
||||
|
||||
@ -11,6 +11,7 @@ import com.actionsoft.sdk.local.SDK;
|
||||
import com.actionsoft.sdk.local.api.cc.RDSAPI;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.entity.DateRange;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.service.DataSyncService;
|
||||
import com.awspaas.user.apps.bnbm.datalinkup.util.PurchaseUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -107,6 +108,7 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
// 判断库存同步明细和汇总明细,如果是月初第一天就将上月最后一天数据存储到快照表
|
||||
if("库存".equals(tablename)){
|
||||
if (LocalDate.now().getDayOfMonth() == 1) {
|
||||
LOGGER.info("当天为1号,将前一天同步的全部数据存为快照,在删除同步新的全量库存数据");
|
||||
// 执行同步逻辑
|
||||
List<BO> list = SDK.getBOAPI().query(targetTable).list();
|
||||
int pageSize = 1000;
|
||||
@ -667,6 +669,7 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
String startDate = "";
|
||||
String endDate = "";
|
||||
PurchaseUtil purchaseUtil = new PurchaseUtil();
|
||||
try {
|
||||
do {
|
||||
if (startDated == null || endDated == null) {
|
||||
@ -712,6 +715,18 @@ public class PurchaseDataSyncServiceImpl implements DataSyncService {
|
||||
bo.set(key, map.get(key));
|
||||
}
|
||||
}
|
||||
// 如果是采购_入库单汇总 刷新物料名称
|
||||
if (hzb.equals("BO_EU_DWD_ORDER_RKD_HZ")){
|
||||
String wlmc = bo.getString("WLMC");
|
||||
String bkgs = bo.getString("BKGS");
|
||||
String wlbm = bo.getString("WLBM");
|
||||
String jldw = bo.getString("JLDW");
|
||||
String wlfl = bo.getString("WLFL");
|
||||
Double djhyf = Double.parseDouble(bo.getString("DJHYF"));
|
||||
String newWlmc = purchaseUtil.materialClassificationFiltering(bkgs, wlmc, wlbm, jldw, djhyf, wlfl);
|
||||
bo.set("WLMC",newWlmc);
|
||||
LOGGER.info("采购_入库单汇总,刷新物料名称------物料名称:{},板块公司:{},物料编码:{},入库单位:{},单价:{},物料分类:{}",wlmc,bkgs,wlbm,jldw,djhyf,wlfl);
|
||||
}
|
||||
bos.add(bo);
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
package com.awspaas.user.apps.bnbm.datalinkup.util;
|
||||
|
||||
/**
|
||||
* 采购模块工具类
|
||||
*/
|
||||
public class PurchaseUtil {
|
||||
/**
|
||||
* 判断物料名称所属分类
|
||||
* @param bkgs 板块名称
|
||||
* @param wlmc 物料名称
|
||||
* @param wlbm 物料编码
|
||||
* @param jldw 计量单位
|
||||
* @param djhyf 单价含运费
|
||||
* @param wlfl 物料分类
|
||||
* @return newWlmc 物料名称
|
||||
*/
|
||||
public static String materialClassificationFiltering(String bkgs, String wlmc, String wlbm, String jldw, Double djhyf, String wlfl) {
|
||||
String newWlmc = "";
|
||||
// 脱硫石膏
|
||||
if(("龙牌".equals(bkgs) || "梦牌".equals(bkgs) || "泰山石膏".equals(bkgs)) && wlmc.contains("脱硫石膏")){
|
||||
newWlmc = "脱硫石膏";
|
||||
}
|
||||
// 镀锌带钢
|
||||
else if ("泰山石膏".equals(bkgs) && wlmc.contains("镀锌带钢")) {
|
||||
newWlmc = "镀锌带钢";
|
||||
} else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs))
|
||||
&& (wlmc.equals("轻钢镀锌带钢") || wlmc.equals("镀锌带钢"))) {
|
||||
newWlmc = "镀锌带钢";
|
||||
}
|
||||
// 煤炭
|
||||
else if (("龙牌".equals(bkgs) || "梦牌".equals(bkgs)
|
||||
&& ("煤炭".contains(wlmc) || "籽煤".contains(wlmc) || "褐煤".contains(wlmc)))) {
|
||||
newWlmc = "煤炭";
|
||||
} else if ("泰山石膏".equals(bkgs) && ("原煤".contains(wlmc) || "contains".equals(wlmc) || "contains".equals(wlmc))) {
|
||||
newWlmc = "煤炭";
|
||||
}
|
||||
// 护面纸
|
||||
else if (("龙牌".equals(bkgs) || "泰山石膏".equals(bkgs))
|
||||
&& "护面纸".contains(wlmc)) {
|
||||
newWlmc = "护面纸";
|
||||
}
|
||||
// 乳液
|
||||
else if (("北新防水".equals(bkgs) || "北新涂料".equals(bkgs) || "北新嘉宝莉".equals(bkgs)
|
||||
&& "乳液".contains(wlmc))){
|
||||
newWlmc = "乳液";
|
||||
}
|
||||
// 钛白粉
|
||||
else if (("北新防水".equals(bkgs) || "北新涂料".equals(bkgs) || "北新嘉宝莉".equals(bkgs)
|
||||
&& "钛白粉".contains(wlmc))){
|
||||
newWlmc = "钛白粉";
|
||||
}
|
||||
// 重钙
|
||||
else if (("北新防水".equals(bkgs) || "北新涂料".equals(bkgs) || "北新嘉宝莉".equals(bkgs)
|
||||
&& "重钙".contains(wlmc))){
|
||||
newWlmc = "重钙";
|
||||
}
|
||||
// 包装袋
|
||||
else if ("龙牌".equals(bkgs) && ("编织袋".equals(wlmc) || "阀口袋".equals(wlmc) || "两纸一膜".equals(wlmc)
|
||||
|| "三纸一膜".contains(wlmc) || "包装袋".contains(wlmc) || "包装".contains(wlmc))) {
|
||||
newWlmc = "包装袋";
|
||||
} else if ("泰山石膏".equals(bkgs) && ("编织袋".contains(wlmc) || "纸袋".contains(wlmc))) {
|
||||
newWlmc = "包装袋";
|
||||
} else if ("梦牌".equals(bkgs) && "包装袋".contains(wlmc)) {
|
||||
newWlmc = "包装袋";
|
||||
} else if ("北新防水".equals(bkgs) && ("包装袋".contains(wlmc) || "阀口袋".contains(wlmc) || "口袋".contains(wlmc))) {
|
||||
newWlmc = "包装袋";
|
||||
} else if ("北新涂料".equals(bkgs) && "包装袋".contains(wlmc)) {
|
||||
newWlmc = "包装袋";
|
||||
} else if ("北新嘉宝莉".equals(bkgs) && ("阀口袋".contains(wlmc) || "腻子粉袋".contains(wlmc) || "阀口纸袋".contains(wlmc)
|
||||
|| "纸袋".equals(wlmc) || "编织袋".equals(wlmc))) {
|
||||
newWlmc = "包装袋";
|
||||
}
|
||||
// 包装桶
|
||||
else if ("龙牌".equals(bkgs) && wlbm.contains("1023411")) {
|
||||
newWlmc = "包装桶";
|
||||
} else if ("北新防水".equals(bkgs) && wlmc.contains("桶") && jldw.contains("个")) {
|
||||
newWlmc = "包装桶";
|
||||
} else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("盖") && djhyf < 5.0) {
|
||||
newWlmc = "桶盖";
|
||||
} else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶身")) {
|
||||
newWlmc = "包装桶";
|
||||
} else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("桶") && jldw.contains("个")) {
|
||||
newWlmc = "包装桶";
|
||||
} else if ("北新嘉宝莉".equals(bkgs) && wlmc.contains("罐")
|
||||
&& !wlmc.contains("箱") && wlfl.contains("包装物") && jldw.equals("个")) {
|
||||
newWlmc = "包装桶";
|
||||
} else {
|
||||
newWlmc = wlmc;
|
||||
}
|
||||
return newWlmc;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user