Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
ab0e306fa2
|
|
@ -48,7 +48,7 @@ public class ReportInsertBP {
|
||||||
this.addAfterFinalRule(processer);
|
this.addAfterFinalRule(processer);
|
||||||
processer.before(aggVO);
|
processer.before(aggVO);
|
||||||
BillInsert<ReportVO> bo = new BillInsert();
|
BillInsert<ReportVO> bo = new BillInsert();
|
||||||
ReportVO[] vos = (ReportVO[])bo.insert(aggVO);
|
ReportVO[] vos = (ReportVO[]) bo.insert(aggVO);
|
||||||
processer.after(aggVO);
|
processer.after(aggVO);
|
||||||
return vos;
|
return vos;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -107,10 +107,8 @@ public class SyncQcQmsRule implements IRule<ReportVO> {
|
||||||
String creatorName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME,
|
String creatorName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME,
|
||||||
UserVO.CUSERID + " = '" + hvo.getBillmaker() + "'");
|
UserVO.CUSERID + " = '" + hvo.getBillmaker() + "'");
|
||||||
JSONObject singleObj = new JSONObject();
|
JSONObject singleObj = new JSONObject();
|
||||||
String cghth = "";
|
// ²É¹ººÏͬºÅ
|
||||||
if (bvo != null && bvo.length > 0) {
|
String cghth = getCghthVal(bvo);
|
||||||
cghth = bvo[0].getVsourcecode();
|
|
||||||
}
|
|
||||||
// 启源送检单主表
|
// 启源送检单主表
|
||||||
long cts = System.currentTimeMillis();
|
long cts = System.currentTimeMillis();
|
||||||
singleObj.put("batchid", cts);
|
singleObj.put("batchid", cts);
|
||||||
|
|
@ -123,7 +121,7 @@ public class SyncQcQmsRule implements IRule<ReportVO> {
|
||||||
singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息
|
singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息
|
||||||
// 查询关联的质检报告-传入启源送检单的明细
|
// 查询关联的质检报告-传入启源送检单的明细
|
||||||
HYPubBO hybo = new HYPubBO();
|
HYPubBO hybo = new HYPubBO();
|
||||||
ReportItemVO[] reportItemVOS = (ReportItemVO[]) hybo.queryByCondition(ReportItemVO.class, " and cfirstid = '" + pk_arriveorder + "'");
|
ReportItemVO[] reportItemVOS = (ReportItemVO[]) hybo.queryByCondition(ReportItemVO.class, " cfirstid = '" + pk_arriveorder + "'");
|
||||||
JSONArray contentArray = new JSONArray();
|
JSONArray contentArray = new JSONArray();
|
||||||
for (ReportItemVO reportItemVO : reportItemVOS) {
|
for (ReportItemVO reportItemVO : reportItemVOS) {
|
||||||
String pkReportbill = reportItemVO.getPk_reportbill();
|
String pkReportbill = reportItemVO.getPk_reportbill();
|
||||||
|
|
@ -150,6 +148,26 @@ public class SyncQcQmsRule implements IRule<ReportVO> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getCghthVal(ArriveItemVO[] bvo) {
|
||||||
|
String cghth = "";
|
||||||
|
if (bvo != null && bvo.length > 0) {
|
||||||
|
StringBuilder cghthBuilder = new StringBuilder();
|
||||||
|
for (int i = 0; i < bvo.length; i++) {
|
||||||
|
String vsourcecode = bvo[i].getVsourcecode();
|
||||||
|
if (vsourcecode == null || vsourcecode.isEmpty() || "~".equals(vsourcecode)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (i > 0) {
|
||||||
|
cghthBuilder.append(",");
|
||||||
|
}
|
||||||
|
cghthBuilder.append(vsourcecode);
|
||||||
|
// ²éѯ²É¹ºÔ±Ãû³Æ
|
||||||
|
}
|
||||||
|
cghth = cghthBuilder.toString();
|
||||||
|
}
|
||||||
|
return cghth;
|
||||||
|
}
|
||||||
|
|
||||||
private void buildSyncData1(ReportVO[] useVOs) throws BusinessException {
|
private void buildSyncData1(ReportVO[] useVOs) throws BusinessException {
|
||||||
for (ReportVO vo : useVOs) {
|
for (ReportVO vo : useVOs) {
|
||||||
ReportHeaderVO hvo = vo.getHVO();
|
ReportHeaderVO hvo = vo.getHVO();
|
||||||
|
|
|
||||||
|
|
@ -176,8 +176,8 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> {
|
||||||
String requestUrl = baseUrl + reqUrl;
|
String requestUrl = baseUrl + reqUrl;
|
||||||
logger.error("QMS-SaleOrder-url = " + requestUrl);
|
logger.error("QMS-SaleOrder-url = " + requestUrl);
|
||||||
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
|
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
|
||||||
JSONObject resultObj = JSONObject.parseObject(result);
|
|
||||||
logger.error("QMS-SaleOrder-res = " + result);
|
logger.error("QMS-SaleOrder-res = " + result);
|
||||||
|
JSONObject resultObj = JSONObject.parseObject(result);
|
||||||
|
|
||||||
if (!"true".equals(resultObj.getString("success"))) {
|
if (!"true".equals(resultObj.getString("success"))) {
|
||||||
logger.error("QMS-SaleOrder-error,result[" + resultObj.toJSONString() + "]");
|
logger.error("QMS-SaleOrder-error,result[" + resultObj.toJSONString() + "]");
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ public class ApproveSaleOrderAction {
|
||||||
// 在审批后推送到QMS系统
|
// 在审批后推送到QMS系统
|
||||||
processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS());
|
processer.addAfterRule(new AfterApprovingSynchronizeRuleQMS());
|
||||||
// 在审批后推送到高压MES
|
// 在审批后推送到高压MES
|
||||||
processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
processer.addAfterRule(new AfterSoSyncRuleGyMes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isExistDelivery(String ctranstype) {
|
private boolean isExistDelivery(String ctranstype) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,258 @@
|
||||||
|
package nc.bs.uapbd.task;
|
||||||
|
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.logging.Log;
|
||||||
|
import nc.bs.logging.Logger;
|
||||||
|
import nc.bs.pub.pa.PreAlertObject;
|
||||||
|
import nc.bs.pub.taskcenter.BgWorkingContext;
|
||||||
|
import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
|
||||||
|
import nc.bs.uapbd.util.MyHelper;
|
||||||
|
import nc.itf.mmpac.pickm.IPickmQueryService;
|
||||||
|
import nc.itf.uap.pf.busiflow.PfButtonClickContext;
|
||||||
|
import nc.jdbc.framework.JdbcSession;
|
||||||
|
import nc.jdbc.framework.PersistenceManager;
|
||||||
|
import nc.jdbc.framework.exception.DbException;
|
||||||
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
|
import nc.pubitf.ic.m4d.api.IMaterialOutMaintainAPI;
|
||||||
|
import nc.util.mmf.busi.service.PFPubService;
|
||||||
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
|
import nc.vo.bd.material.MaterialVO;
|
||||||
|
import nc.vo.fi.pub.SqlUtils;
|
||||||
|
import nc.vo.ic.m4d.entity.MaterialOutBodyVO;
|
||||||
|
import nc.vo.ic.m4d.entity.MaterialOutHeadVO;
|
||||||
|
import nc.vo.ic.m4d.entity.MaterialOutVO;
|
||||||
|
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pub.lang.UFDate;
|
||||||
|
import nc.vo.pub.lang.UFDateTime;
|
||||||
|
import nc.vo.pub.lang.UFDouble;
|
||||||
|
import nc.vo.scmpub.res.billtype.ICBillType;
|
||||||
|
import nc.vo.scmpub.res.billtype.MMBillType;
|
||||||
|
import nccloud.baseapp.core.log.NCCForUAPLogger;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时同步高压加工车间IMS的材料出库
|
||||||
|
*
|
||||||
|
* @author mzr
|
||||||
|
* @date 20250930
|
||||||
|
*/
|
||||||
|
public class MaterialOutGyImsPlugin implements IBackgroundWorkPlugin {
|
||||||
|
|
||||||
|
private static final String LOG_INFO_NAME = "gymeslog";
|
||||||
|
private static final Log logger = Log.getInstance(LOG_INFO_NAME);
|
||||||
|
|
||||||
|
private SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
private SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
// BIP数据源
|
||||||
|
public static final BaseDAO baseDAO = new BaseDAO();
|
||||||
|
// IMS数据源
|
||||||
|
public BaseDAO imsDao;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取IMS数据源
|
||||||
|
*/
|
||||||
|
public BaseDAO getImsDao() {
|
||||||
|
if (imsDao == null) {
|
||||||
|
imsDao = new BaseDAO("gyims");
|
||||||
|
// 禁用时间戳ts
|
||||||
|
imsDao.setAddTimeStamp(false);
|
||||||
|
}
|
||||||
|
return imsDao;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PreAlertObject executeTask(BgWorkingContext arg0) {
|
||||||
|
Logger.error("---start----任务开始运行--");
|
||||||
|
try {
|
||||||
|
IPickmQueryService queryService = NCLocator.getInstance().lookup(IPickmQueryService.class);
|
||||||
|
// IMS 同步状态:BIP:C-创建;U-修改D-删除 IMS:2-MES单据接收完成
|
||||||
|
String selSql = "select * from BIPOutMainTab where status != '2'";
|
||||||
|
List<Map<String, Object>> mainList = (List<Map<String, Object>>) getImsDao().executeQuery(selSql, new MapListProcessor());
|
||||||
|
Set<String> imsIdSet = new HashSet<>();
|
||||||
|
for (Map<String, Object> mainMap : mainList) {
|
||||||
|
String cgeneralhid = mainMap.get("cgeneralhid") + "";
|
||||||
|
try {
|
||||||
|
String pkSql = "select * from BIPOutDetailTab where cgeneralhid = '" + cgeneralhid + "'";
|
||||||
|
List<Map<String, Object>> detailList = (List<Map<String, Object>>) getImsDao().executeQuery(pkSql, new MapListProcessor());
|
||||||
|
Map<String, Map<String, Object>> detailIdMap = new HashMap<>();
|
||||||
|
for (Map<String, Object> detailMap : detailList) {
|
||||||
|
detailIdMap.put(detailMap.get("vbdef17") + "", detailMap);
|
||||||
|
}
|
||||||
|
if (detailList.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String csourcebillhid = detailList.get(0).get("vbdef16") + "";// 备料计划主键
|
||||||
|
// 查询备料计划的VO
|
||||||
|
AggPickmVO[] pickmVOS = queryService.queryBillsByPks(new String[]{csourcebillhid});
|
||||||
|
// 调用单据转换规则转换出流程材料出库的VO
|
||||||
|
MaterialOutVO[] vos = (MaterialOutVO[]) PFPubService.runChangeData(MMBillType.PickMo.getCode(), ICBillType.MaterialOut.getCode(),
|
||||||
|
pickmVOS, null, PfButtonClickContext.ClassifyByItfdef);
|
||||||
|
if (MMValueCheck.isEmpty(vos)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 设置行号
|
||||||
|
setMaterialOutRowNum(vos);
|
||||||
|
// 根据IMS字段赋值
|
||||||
|
for (MaterialOutVO vo : vos) {
|
||||||
|
MaterialOutHeadVO hvo = vo.getHead();
|
||||||
|
MaterialOutBodyVO[] bodys = vo.getBodys();
|
||||||
|
hvo.setVbillcode(mainMap.get("vbillcode") + "");
|
||||||
|
hvo.setCreator("BIP");
|
||||||
|
hvo.setBillmaker("BIP");
|
||||||
|
hvo.setVtrantypecode("4D-01");
|
||||||
|
if (mainMap.get("dmakedate") != null && mainMap.get("dmakedate") instanceof Timestamp dmakedate1) {
|
||||||
|
String dmakedateStr = DATE_FORMATTER.format(dmakedate1);
|
||||||
|
UFDate dmakedate = new UFDate(dmakedateStr);
|
||||||
|
hvo.setDmakedate(dmakedate);
|
||||||
|
}
|
||||||
|
if (mainMap.get("creationtime") != null && mainMap.get("creationtime") instanceof Timestamp creationtime1) {
|
||||||
|
String creationtimeStr = DATETIME_FORMATTER.format(creationtime1);
|
||||||
|
UFDateTime creationtime = new UFDateTime(creationtimeStr);
|
||||||
|
hvo.setCreationtime(creationtime);
|
||||||
|
}
|
||||||
|
for (MaterialOutBodyVO bvo : bodys) {
|
||||||
|
String getCsourcebillbid = bvo.getCsourcebillbid();// 备料计划明细id
|
||||||
|
Map<String, Object> detailMap = detailIdMap.get(getCsourcebillbid);
|
||||||
|
if (detailMap != null) {
|
||||||
|
// 物料或数量替换
|
||||||
|
bvo.setNshouldnum(skipNullNum(detailMap.get("nshouldnum"), bvo.getNshouldnum()));// 应发主数量
|
||||||
|
bvo.setNshouldassistnum(skipNullNum(detailMap.get("nshouldassistnum"), bvo.getNshouldassistnum()));// 应发数量
|
||||||
|
bvo.setNnum(skipNullNum(detailMap.get("nnum"), bvo.getNnum()));// 实发主数量
|
||||||
|
bvo.setNassistnum(skipNullNum(detailMap.get("nassistnum"), bvo.getNassistnum()));// 实发数量
|
||||||
|
// 如果物料不相等,则BIP物料替换为IMS物料
|
||||||
|
String cmaterialvid = bvo.getCmaterialvid();
|
||||||
|
String goodsCode = detailMap.get("cmaterialvid") + "";
|
||||||
|
String whereSql = MaterialVO.CODE + " = '" + goodsCode + "'" + " and pk_org = '" + hvo.getPk_org() + "'";
|
||||||
|
String goodsId = MyHelper.getStrValByCondition(MaterialVO.getDefaultTableName(), MaterialVO.PK_MATERIAL,
|
||||||
|
whereSql);
|
||||||
|
if (!cmaterialvid.equals(goodsId)) {
|
||||||
|
bvo.setCmaterialvid(goodsId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IMaterialOutMaintainAPI materialOut = NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class);
|
||||||
|
MaterialOutVO[] resultvos = materialOut.insertBills(vos);
|
||||||
|
if (MMValueCheck.isEmpty(resultvos)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
imsIdSet.add(cgeneralhid);
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
Logger.error("MaterialOutGyImsPlugin Error: ", e);
|
||||||
|
NCCForUAPLogger.debug("MaterialOutGyImsPlugin Error: " + e.getMessage());
|
||||||
|
String updateSql = "update BIPOutMainTab set err_msg = '[err_msg]' where cgeneralhid = '[cgeneralhid]'";
|
||||||
|
updateSql = updateSql.replace("[err_msg]", e.getMessage());
|
||||||
|
updateSql = updateSql.replace("[cgeneralhid]", cgeneralhid);
|
||||||
|
NCCForUAPLogger.debug("MaterialOutGyImsPlugin-updateSql = " + updateSql);
|
||||||
|
int rows = executeUpdate(updateSql, cgeneralhid);
|
||||||
|
NCCForUAPLogger.debug("MaterialOutGyImsPlugin-rows = " + rows);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!imsIdSet.isEmpty()) {
|
||||||
|
// 修改状态为 完成
|
||||||
|
String inSql = SqlUtils.getInStr("cgeneralhid", imsIdSet.toArray(new String[0]), Boolean.TRUE);
|
||||||
|
String updateSql = "update BIPOutMainTab set status = '2',err_msg = null where " + inSql;
|
||||||
|
executeUpdate(updateSql, imsIdSet.toString());
|
||||||
|
}
|
||||||
|
Logger.error("---end----任务结束运行--");
|
||||||
|
} catch (Exception e) {
|
||||||
|
Logger.error("MaterialOutGyImsPlugin Error: ", e);
|
||||||
|
NCCForUAPLogger.debug("MaterialOutGyImsPlugin Error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private UFDouble skipNullNum(Object value, UFDouble num) {
|
||||||
|
if (value instanceof BigDecimal) {
|
||||||
|
return new UFDouble((BigDecimal) value);
|
||||||
|
}
|
||||||
|
if (num != null) {
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
return UFDouble.ZERO_DBL;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setMaterialOutRowNum(MaterialOutVO[] vos) {
|
||||||
|
for (int i = 0; i < vos.length; i++) {
|
||||||
|
MaterialOutVO vo = vos[i];
|
||||||
|
MaterialOutBodyVO[] bodys = vo.getBodys();
|
||||||
|
if (bodys != null && bodys.length > 0) {
|
||||||
|
for (int j = 0; j < bodys.length; j++) {
|
||||||
|
MaterialOutBodyVO body = bodys[j];
|
||||||
|
body.setCrowno(String.valueOf((j + 1) * 10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int executeUpdate(String sql, String targetId) throws BusinessException {
|
||||||
|
|
||||||
|
// 2. 直接通过静态工厂方法获取 PersistenceManager
|
||||||
|
PersistenceManager pm = null;
|
||||||
|
JdbcSession jdbcSession = null;
|
||||||
|
Connection conn = null;
|
||||||
|
int rows = 0;
|
||||||
|
try {
|
||||||
|
// 直接调用 PersistenceManager 的静态方法 getInstance()
|
||||||
|
pm = PersistenceManager.getInstance("gyims");
|
||||||
|
pm.setAddTimeStamp(false);// 不添加时间戳ts
|
||||||
|
|
||||||
|
// 2.1 获取 JdbcSession 和 Connection
|
||||||
|
jdbcSession = pm.getJdbcSession();
|
||||||
|
jdbcSession.setSQLTranslator(true); // 保持 SQL 转换
|
||||||
|
conn = jdbcSession.getConnection();
|
||||||
|
conn.setAutoCommit(false);
|
||||||
|
logger.info("直接获取PersistenceManager,手动事务开启,targetId:" + targetId);
|
||||||
|
|
||||||
|
// 4. 执行主表+子表操作 (传入共享的 pm)
|
||||||
|
logger.info("事务内执行更新,targetId:" + targetId);
|
||||||
|
rows = pm.getJdbcSession().executeUpdate(sql);
|
||||||
|
logger.info("事务内执行更新,rows:" + rows);
|
||||||
|
logger.info("事务内操作全部成功,准备提交,targetId:" + targetId);
|
||||||
|
|
||||||
|
} catch (DbException | SQLException e) { // 捕获 DbException 和 SQLException
|
||||||
|
logger.error("事务执行失败,触发回滚,targetId:" + targetId);
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.rollback();
|
||||||
|
logger.info("事务回滚完成,targetId:" + targetId);
|
||||||
|
} catch (SQLException rollbackE) {
|
||||||
|
logger.error("事务回滚异常,targetId:" + targetId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new BusinessException("备料计划同步事务失败:" + e.getMessage(), e);
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
if (conn != null) {
|
||||||
|
try {
|
||||||
|
conn.commit();
|
||||||
|
logger.info("事务提交成功,targetId:" + targetId);
|
||||||
|
// 恢复自动提交模式,确保不会影响其他操作
|
||||||
|
conn.setAutoCommit(true);
|
||||||
|
} catch (SQLException commitE) {
|
||||||
|
logger.error("事务提交异常,targetId:" + targetId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 5. 释放 PersistenceManager (至关重要)
|
||||||
|
if (pm != null) {
|
||||||
|
try {
|
||||||
|
pm.release(); // 必须调用 release() 将连接归还给连接池
|
||||||
|
logger.info("PersistenceManager 释放完成,targetId:" + targetId);
|
||||||
|
} catch (Exception releaseE) {
|
||||||
|
logger.error("PersistenceManager 释放异常", releaseE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -43,14 +43,8 @@ public class MaterialToQmsListener implements IBusinessListener {
|
||||||
Object[] objs = e.getObjs();
|
Object[] objs = e.getObjs();
|
||||||
|
|
||||||
// EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后
|
// EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后
|
||||||
if ("1004".equals(eventType)) {
|
if ("1002".equals(eventType) || "1004".equals(eventType)
|
||||||
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
|
|| "1071".equals(eventType) || "1069".equals(eventType)) {
|
||||||
configParams = MyHelper.getConfigParams("xb-config", null);
|
|
||||||
if (configParams.isEmpty()) {
|
|
||||||
throw new BusinessException("箱变的QMS接口缺少配置");
|
|
||||||
}
|
|
||||||
buildSyncData(useVOs, eventType);
|
|
||||||
} else if ("1071".equals(eventType) || "1069".equals(eventType)) {
|
|
||||||
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
|
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
|
||||||
configParams = MyHelper.getConfigParams("xb-config", null);
|
configParams = MyHelper.getConfigParams("xb-config", null);
|
||||||
if (configParams.isEmpty()) {
|
if (configParams.isEmpty()) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue