Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
5661894e83
|
|
@ -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"));// 库存供货组织
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import java.util.*;
|
|||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 高压MES-物料新增后同步
|
||||
* 高压MES-物料新增后同步-已弃用
|
||||
*
|
||||
* @author lihao
|
||||
* @date 2025/09/11
|
||||
|
|
|
|||
|
|
@ -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 {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import java.util.*;
|
|||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 高压MES-物料修改后同步
|
||||
* 高压MES-物料修改后同步-已弃用
|
||||
*
|
||||
* @author mzr
|
||||
* @date 2025/09/11
|
||||
|
|
|
|||
Loading…
Reference in New Issue