高压物料推送注释调整

This commit is contained in:
mzr 2025-12-02 15:16:24 +08:00
parent 22004d24aa
commit 7654d019e9
4 changed files with 78 additions and 79 deletions

View File

@ -36,6 +36,11 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Stream;
/**
* 描述:物料同步到高压mes-已弃用
*
* @author lihao
*/
public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
private HYSuperDMO superDMO = null;
private static final String LOG_INFO_NAME = "gymeslog";
@ -44,14 +49,16 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
private static final String updateUrl = "/bip/order/materialUpdate";
private Map<String, String> configParams;
private String orgId = "";
public HYSuperDMO getSuperDMO() {
if(superDMO == null) {
if (superDMO == null) {
superDMO = new HYSuperDMO();
}
return superDMO;
}
@Override
public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
Logger.error("---start----任务开始运行--");
@ -68,7 +75,7 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
OrgVO.PK_ORG,
OrgVO.CODE + " = 'C046' and ISBUSINESSUNIT = 'Y'"
);
UFDouble hours=configParams.get("hours") != null ? new UFDouble(configParams.get("hours")) : UFDouble.ONE_DBL.add(UFDouble.ONE_DBL);
UFDouble hours = configParams.get("hours") != null ? new UFDouble(configParams.get("hours")) : UFDouble.ONE_DBL.add(UFDouble.ONE_DBL);
// 在Java中计算时间范围当前时间前两小时到当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endTime = new Date(); // 当前时间
@ -103,10 +110,10 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
" AND ts BETWEEN '" + startStr + "' AND '" + endStr + "'";
ArrayList<HashMap<String, Object>> al = (ArrayList<HashMap<String, Object>>) dao.executeQuery(sql, new MapListProcessor());
if(al.isEmpty()) {
if (al.isEmpty()) {
return null;
}
List<MaterialVO> list=new ArrayList<>();
List<MaterialVO> list = new ArrayList<>();
for (HashMap<String, Object> map : al) {
HYPubBO hyPub = new HYPubBO();
MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey((Class) MaterialVO.class, (String) map.get("pk_material"));
@ -124,11 +131,11 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
MaterialVO[] useVOs = list.toArray(new MaterialVO[0]);
buildSyncData(useVOs);
}
}catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
//Òì³£»Ø¹ö
// 异常回滚
TransactionFactory.getTMProxy().end(e);
Logger.error("writeBack Error: ",e);
Logger.error("writeBack Error: ", e);
}
return null;
}
@ -197,7 +204,7 @@ public class MaterialToGyMesTaskPlugin implements IBackgroundWorkPlugin {
// 库存供货组织编码获取
String mrlsql = "select code from org_stockorg where pk_stockorg = '" + stockMap.get("pk_suplystockorg") + "' ";
Map<String, Object> stockorg = (Map<String, Object>) baseDAO.executeQuery(mrlsql, new MapProcessor());
if(stockorg != null && !stockorg.isEmpty()){
if (stockorg != null && !stockorg.isEmpty()) {
singleObj.put("supplyInventoryOrg", stockorg.get("code"));// 库存供货组织
}

View File

@ -30,7 +30,7 @@ import java.util.*;
import java.util.stream.Stream;
/**
* 高压MES-物料新增后同步
* 高压MES-物料新增后同步-已弃用
*
* @author lihao
* @date 2025/09/11

View File

@ -1,32 +1,27 @@
package nccloud.api.uapbd.material.listener;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import nc.bs.bd.assignservice.multiorg.MultiOrgAssignVO;
import nc.bs.bd.baseservice.ArrayClassConvertUtil;
import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener;
import nc.bs.businessevent.bd.BDCommonEvent;
import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.bs.logging.Log;
import nc.bs.trade.business.HYPubBO;
import nc.bs.uapbd.util.MyHelper;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapListProcessor;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.marbasclass.MarBasClassVO;
import nc.vo.bd.material.stock.MaterialStockVO;
import nc.vo.bd.pub.BDCacheQueryUtil;
import nc.vo.fi.pub.SqlUtils;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import java.util.*;
/**
* 描述:物料同步到高压IMS-已弃用
*
* @author lihao
*/
public class MaterialToGyImsListener implements IBusinessListener {
private static final String LOG_INFO_NAME = "dldzlog";
private static final Log logDl = Log.getInstance(LOG_INFO_NAME);
@ -40,27 +35,27 @@ public class MaterialToGyImsListener implements IBusinessListener {
Object[] objs = e.getObjs();
// EventType是事件编码 1009分配后新增 1012 取消分配后删除
if ("1009".equals(eventType) ) {
if ("1009".equals(eventType)) {
configParams = MyHelper.getConfigParams("gy-config", null);
if (configParams.isEmpty()) {
throw new BusinessException("高压的gymes接口缺少配置");
}
MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class);
MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class);
for (MaterialStockVO materialStockVO : materialStockVOS) {
String pkOrg = materialStockVO.getPk_org();
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
Integer num = MyHelper.checkIfOrg1(configParams, materialStockVO.getPk_materialstock(), "imsOrg");
if ((num <= 0)) {
continue;
}else {
} else {
// for (MaterialStockVO stockVO:(MaterialStockVO[])objs ){
String materialid = materialStockVO.getPk_material();
MaterialVO[] useVOs = (MaterialVO[]) BDCacheQueryUtil.queryVOsByIDs(
MaterialVO.class,
MaterialVO.PK_MATERIAL,
new String[]{materialid},
new String[]{MaterialVO.PK_MEASDOC});
pushIms(useVOs);
String materialid = materialStockVO.getPk_material();
MaterialVO[] useVOs = (MaterialVO[]) BDCacheQueryUtil.queryVOsByIDs(
MaterialVO.class,
MaterialVO.PK_MATERIAL,
new String[]{materialid},
new String[]{MaterialVO.PK_MEASDOC});
pushIms(useVOs);
// }
}
@ -73,12 +68,11 @@ public class MaterialToGyImsListener implements IBusinessListener {
// new String[]{MaterialVO.PK_MEASDOC});
//
// pushIms(useVOs);
}else if ("1069".equals(eventType) || "1071".equals(eventType) ) {
} else if ("1069".equals(eventType) || "1071".equals(eventType)) {
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
// 更新启用状态
updateEnableStatus(useVOs);
updateEnableStatus(useVOs);
} else if ("1012".equals(eventType)) {
@ -86,7 +80,7 @@ public class MaterialToGyImsListener implements IBusinessListener {
if (configParams.isEmpty()) {
throw new BusinessException("高压的gymes接口缺少配置");
}
MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class);
MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class);
for (MaterialStockVO materialStockVO : materialStockVOS) {
String pkOrg = materialStockVO.getPk_org();
String[] orgItem = configParams.get("imsOrg").split(",");
@ -94,11 +88,11 @@ public class MaterialToGyImsListener implements IBusinessListener {
// Integer num = MyHelper.checkIfOrg1(configParams, materialStockVO.getPk_materialstock(), "imsOrg");
if (!contains(orgItem, orgCode)) {
continue;
}else {
updateStatus(materialStockVO.getPk_material(),"D");
} else {
updateStatus(materialStockVO.getPk_material(), "D");
}
}
}else if ("1004".equals(eventType) ) {
} else if ("1004".equals(eventType)) {
configParams = MyHelper.getConfigParams("gy-config", null);
if (configParams.isEmpty()) {
throw new BusinessException("高压的gymes接口缺少配置");
@ -109,9 +103,9 @@ public class MaterialToGyImsListener implements IBusinessListener {
updateIms(useVOs);
}
}
public static boolean contains(String[] orgItem, String target) {
// 数组为null时直接返回false
if (orgItem == null) {
@ -135,7 +129,7 @@ public class MaterialToGyImsListener implements IBusinessListener {
Integer orgCheckResult = MyHelper.checkIfOrg(configParams, materialVO.getPk_material(), "imsOrg");
if (orgCheckResult != null && orgCheckResult > 0) {
materialCodes.add(materialVO.getPk_material());
updateStatus(materialVO.getPk_material(),"U");
updateStatus(materialVO.getPk_material(), "U");
}
}
@ -160,23 +154,23 @@ public class MaterialToGyImsListener implements IBusinessListener {
// 执行单条SQL插入
BaseDAO gyimsDao = new BaseDAO("gyims");
gyimsDao.setAddTimeStamp(false);
List<String> code=new ArrayList<>();
List<String> code = new ArrayList<>();
for (MaterialVO materialVO : useVOs) {
code.add(materialVO.getPk_material());
}
String placeholders = String.join(",", Collections.nCopies(code.size(), "?"));
placeholders=code.get(0);
placeholders = code.get(0);
String sql = " \t\tSELECT\n" +
"\t* \n" +
"from bd_material a " +
"where a.pk_material IN ('" + placeholders + "')";
List<Map<String,Object>> remain = (List<Map<String, Object>>) new BaseDAO("design").executeQuery(sql, new MapListProcessor());
List<Map<String, Object>> remain = (List<Map<String, Object>>) new BaseDAO("design").executeQuery(sql, new MapListProcessor());
// 定义需要插入的字段与表结构一致
String[] fields = {
"pk_material", "code", "name", "materialspec", "materialtype",
"materialshortname", "pk_measdoc", "pk_marbasclass", "memo",
"enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate","itemCode"
"enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate", "itemCode"
};
// 构建字段部分
@ -192,31 +186,31 @@ public class MaterialToGyImsListener implements IBusinessListener {
StringBuilder values = new StringBuilder();
for (int i = 0; i < remain.size(); i++) {
Map<String, Object> data = remain.get(i);
String selectSql="SELECT count(1) from BIPItemTab where pk_material='" +data.get("pk_material")+ "'";
int num = (int) gyimsDao.executeQuery(selectSql,new ColumnProcessor());
if(num>0){
updateStatus((String) data.get("pk_material"),"C");
String selectSql = "SELECT count(1) from BIPItemTab where pk_material='" + data.get("pk_material") + "'";
int num = (int) gyimsDao.executeQuery(selectSql, new ColumnProcessor());
if (num > 0) {
updateStatus((String) data.get("pk_material"), "C");
continue;
}
data.put("status","C");
String matBasClassSql="SELECT code from bd_marbasclass where pk_marbasclass='" +data.get("pk_marbasclass")+ "'";
String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql,new ColumnProcessor());
data.put("pk_marbasclass",matbascode);
data.put("status", "C");
String matBasClassSql = "SELECT code from bd_marbasclass where pk_marbasclass='" + data.get("pk_marbasclass") + "'";
String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql, new ColumnProcessor());
data.put("pk_marbasclass", matbascode);
String unitsql="SELECT code from bd_measdoc where pk_measdoc='" +data.get("pk_measdoc")+ "'";
String unit = (String) new BaseDAO().executeQuery(unitsql,new ColumnProcessor());
data.put("pk_marbasclass",unit);
data.put("createdate",data.get("creationtime"));
String unitsql = "SELECT code from bd_measdoc where pk_measdoc='" + data.get("pk_measdoc") + "'";
String unit = (String) new BaseDAO().executeQuery(unitsql, new ColumnProcessor());
data.put("pk_marbasclass", unit);
data.put("createdate", data.get("creationtime"));
// 将计划页签图号放入
String def1sql="SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" +data.get("pk_material")+ "' and b.code = '"+configParams.get("imsOrg").toString()+"'";
String def1 = (String) new BaseDAO().executeQuery(def1sql,new ColumnProcessor());
data.put("itemCode",def1);
String def1sql = "SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" + data.get("pk_material") + "' and b.code = '" + configParams.get("imsOrg").toString() + "'";
String def1 = (String) new BaseDAO().executeQuery(def1sql, new ColumnProcessor());
data.put("itemCode", def1);
// 将计量单位编码放入
String pk_measdocsql="SELECT p.code from bd_measdoc p where p.pk_measdoc='" +data.get("pk_measdoc")+ "' ";
String pk_measdoc = (String) new BaseDAO().executeQuery(pk_measdocsql,new ColumnProcessor());
data.put("pk_measdoc",pk_measdoc);
String pk_measdocsql = "SELECT p.code from bd_measdoc p where p.pk_measdoc='" + data.get("pk_measdoc") + "' ";
String pk_measdoc = (String) new BaseDAO().executeQuery(pk_measdocsql, new ColumnProcessor());
data.put("pk_measdoc", pk_measdoc);
values.append("(");
@ -244,7 +238,7 @@ public class MaterialToGyImsListener implements IBusinessListener {
values.append(", ");
}
}
if(values.isEmpty()){
if (values.isEmpty()) {
return;
}
@ -252,19 +246,19 @@ public class MaterialToGyImsListener implements IBusinessListener {
String updateSql = "INSERT INTO BIPItemTab (" + fieldNames.toString() + ") VALUES " + values.toString();
try {
int rowsAffected = gyimsDao.executeUpdate(updateSql);
String K="1";
String K = "1";
} catch (Exception e) {
throw new RuntimeException("插入失败:" + e.getMessage(), e);
}
}
private void updateStatus(String pk,String type) throws BusinessException {
private void updateStatus(String pk, String type) throws BusinessException {
BaseDAO gyimsDao = new BaseDAO("gyims");
gyimsDao.setAddTimeStamp(false);
String sql="update BIPItemTab set status='" + type.toString() + "' where pk_material='" + pk + "'";
String sql = "update BIPItemTab set status='" + type.toString() + "' where pk_material='" + pk + "'";
gyimsDao.executeUpdate(sql);
}
@ -290,7 +284,7 @@ public class MaterialToGyImsListener implements IBusinessListener {
String[] fields = {
"pk_material", "code", "name", "materialspec", "materialtype",
"materialshortname", "pk_measdoc", "pk_marbasclass", "memo",
"enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate","itemCode"
"enablestate", "itemtype", "itemattribute", "itemmodel", "status", "createdate", "itemCode"
};
for (Map<String, Object> data : remain) {
@ -300,19 +294,19 @@ public class MaterialToGyImsListener implements IBusinessListener {
if (pkMaterial == null) {
continue; // 主键为空时跳过更新
}
data.put("createdate",data.get("creationtime"));
String matBasClassSql="SELECT code from bd_marbasclass where pk_marbasclass='" +data.get("pk_marbasclass")+ "'";
String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql,new ColumnProcessor());
data.put("pk_marbasclass",matbascode);
data.put("createdate", data.get("creationtime"));
String matBasClassSql = "SELECT code from bd_marbasclass where pk_marbasclass='" + data.get("pk_marbasclass") + "'";
String matbascode = (String) new BaseDAO().executeQuery(matBasClassSql, new ColumnProcessor());
data.put("pk_marbasclass", matbascode);
String unitsql="SELECT code from bd_measdoc where pk_measdoc='" +data.get("pk_measdoc")+ "'";
String unit = (String) new BaseDAO().executeQuery(unitsql,new ColumnProcessor());
data.put("pk_marbasclass",unit);
String unitsql = "SELECT code from bd_measdoc where pk_measdoc='" + data.get("pk_measdoc") + "'";
String unit = (String) new BaseDAO().executeQuery(unitsql, new ColumnProcessor());
data.put("pk_marbasclass", unit);
// 将计划页签图号放入
String def1sql="SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" +data.get("pk_material")+ "' and b.code = '"+configParams.get("imsOrg").toString()+"'";
String def1 = (String) new BaseDAO().executeQuery(def1sql,new ColumnProcessor());
data.put("itemCode",def1);
String def1sql = "SELECT p.def1 from bd_materialplan p LEFT JOIN org_stockorg b ON p.pk_org = b.pk_stockorg where p.pk_material='" + data.get("pk_material") + "' and b.code = '" + configParams.get("imsOrg").toString() + "'";
String def1 = (String) new BaseDAO().executeQuery(def1sql, new ColumnProcessor());
data.put("itemCode", def1);
// 构建SET部分
List<String> setParts = new ArrayList<>();
for (String field : fields) {
@ -353,6 +347,4 @@ public class MaterialToGyImsListener implements IBusinessListener {
}
}

View File

@ -33,7 +33,7 @@ import java.util.*;
import java.util.stream.Stream;
/**
* 高压MES-物料修改后同步
* 高压MES-物料修改后同步-已弃用
*
* @author mzr
* @date 2025/09/11