Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
aeb5f73a6b
|
|
@ -432,22 +432,28 @@ public class APIMaterialOutMaintainImpl implements IAPIMaterialOutMaintain {
|
||||||
for (MaterialOutVO outVO : outVOS) {
|
for (MaterialOutVO outVO : outVOS) {
|
||||||
MaterialOutBodyVO[] bodys = outVO.getBodys();
|
MaterialOutBodyVO[] bodys = outVO.getBodys();
|
||||||
for (MaterialOutBodyVO body : bodys) {
|
for (MaterialOutBodyVO body : bodys) {
|
||||||
sourceIds.add(body.getCfirstbillhid());
|
sourceIds.add(body.getCsourcebillhid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 查询备料计划行上的成套套数 nbsetpartsnum
|
// 查询备料计划行上的成套套数 nbsetpartsnum
|
||||||
AggPickmVO[] newPickmVOS = queryService.queryBillsByPks(sourceIds.toArray(new String[0]));
|
AggPickmVO[] newPickmVOS = queryService.queryBillsByPks(sourceIds.toArray(new String[0]));
|
||||||
|
if (newPickmVOS == null) {
|
||||||
|
throw new BusinessException("没有查询到材料出库关联的备料计划!");
|
||||||
|
}
|
||||||
// 获取备料计划行上的成套套数的合计值
|
// 获取备料计划行上的成套套数的合计值
|
||||||
Double sum = 0d;
|
Double sum = 0d;
|
||||||
for (AggPickmVO newPickmVO : newPickmVOS) {
|
if (newPickmVOS != null) {
|
||||||
PickmItemVO[] pickmItemVOS = (PickmItemVO[]) newPickmVO.getChildren(PickmItemVO.class);
|
for (AggPickmVO newPickmVO : newPickmVOS) {
|
||||||
for (PickmItemVO pickmItemVO : pickmItemVOS) {
|
PickmItemVO[] pickmItemVOS = (PickmItemVO[]) newPickmVO.getChildren(PickmItemVO.class);
|
||||||
Double nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toDouble();
|
for (PickmItemVO pickmItemVO : pickmItemVOS) {
|
||||||
sum += nbsetpartsnum;
|
Double nbsetpartsnum = pickmItemVO.getNbsetpartsnum().toDouble();
|
||||||
|
sum += nbsetpartsnum;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("vbillcode", paramMap.get("vbillcode"));// 生产订单号
|
result.put("vbillcode", paramMap.get("vbillcode"));// 生产订单号
|
||||||
|
result.put("outcode", outVOS[0].getHead().getVbillcode());// 材料出库单号
|
||||||
result.put("batchId", paramMap.get("batchId"));// 领料批次id
|
result.put("batchId", paramMap.get("batchId"));// 领料批次id
|
||||||
result.put("nbsetpartsnum", sum);// 累计领料套数
|
result.put("nbsetpartsnum", sum);// 累计领料套数
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -93,5 +93,7 @@ public class PMOApproveBP {
|
||||||
ICompareRule<PMOAggVO> auditSupplyRule = new PMOApproveUnAuditSupplyRule();
|
ICompareRule<PMOAggVO> auditSupplyRule = new PMOApproveUnAuditSupplyRule();
|
||||||
processer.addAfterRule(auditSupplyRule);
|
processer.addAfterRule(auditSupplyRule);
|
||||||
processer.addAfterRule(new AfterUnApproveSyncEpicMesRule());
|
processer.addAfterRule(new AfterUnApproveSyncEpicMesRule());
|
||||||
|
// 生产订单取消审批后推送高压MES
|
||||||
|
processer.addAfterRule(new AfterApproveCancelSyncHighpressureMesRule());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,141 @@
|
||||||
|
package nc.bs.mmpac.pmo.pac0002.bp.rule;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
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.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||||
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||||
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
|
||||||
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
||||||
|
import nc.vo.org.OrgVO;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.scmpub.util.ArrayUtil;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程生产订单取消审批后推送高压MES-删除接口
|
||||||
|
*
|
||||||
|
* @author houyi
|
||||||
|
* @date 2025/9/28
|
||||||
|
*/
|
||||||
|
public class AfterApproveCancelSyncHighpressureMesRule implements IRule<PMOAggVO> {
|
||||||
|
|
||||||
|
private static final String LOG_INFO_NAME = "gymeslog";
|
||||||
|
private static final Log logger = Log.getInstance(LOG_INFO_NAME);
|
||||||
|
private Map<String, String> configParams;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(PMOAggVO[] pmoAggVOS) {
|
||||||
|
if (ArrayUtil.isEmpty(pmoAggVOS)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
configParams = MyHelper.getConfigParams("gy-config", null);
|
||||||
|
try {
|
||||||
|
buildSyncData(pmoAggVOS);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("同步生产订单到高压MES系统失败: " + e.getMessage(), e);
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建同步数据
|
||||||
|
*/
|
||||||
|
private void buildSyncData(PMOAggVO[] useVOs) throws BusinessException {
|
||||||
|
BaseDAO baseDAO = new BaseDAO();
|
||||||
|
|
||||||
|
HYPubBO hybo = new HYPubBO();
|
||||||
|
JSONObject list = new JSONObject();
|
||||||
|
JSONArray jsonArray = new JSONArray();
|
||||||
|
for (PMOAggVO vo : useVOs) {
|
||||||
|
PMOHeadVO pmoHeadVO = vo.getParentVO();
|
||||||
|
PMOItemVO[] itemVOS = vo.getChildrenVO();
|
||||||
|
// 判断物料的业务单元是否是高压公司,不是则跳过
|
||||||
|
String pkOrg = pmoHeadVO.getPk_org();
|
||||||
|
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||||
|
if (checkIfOrg(orgCode, configParams)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// JSONObject singleObj = new JSONObject();
|
||||||
|
String sql1 = " select user_name from sm_user where cuserid = '" + pmoHeadVO.getModifier() + "' ";
|
||||||
|
String bipCreateBy = (String) baseDAO.executeQuery(sql1, new ColumnProcessor());
|
||||||
|
list.put("bipUpdateBy", bipCreateBy); // 修改人ID
|
||||||
|
|
||||||
|
// 创建子项数组
|
||||||
|
JSONArray contentArray = new JSONArray();
|
||||||
|
JSONArray cmoidArray = new JSONArray();
|
||||||
|
for (PMOItemVO item : itemVOS) {
|
||||||
|
// 填充子项基础信息
|
||||||
|
String cmoid = item.getCmoid();
|
||||||
|
cmoidArray.add(cmoid);
|
||||||
|
}
|
||||||
|
ArrayList<Object> cmoidObj = new ArrayList<>(Arrays.asList(cmoidArray.toArray()));
|
||||||
|
// 使用 String.join 进行字符串拼接
|
||||||
|
String result = "";
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
if (cmoidObj.size() > 1) {
|
||||||
|
for (int i = 0; i < cmoidObj.size(); i++) {
|
||||||
|
sb.append("'").append(cmoidObj.get(i)).append("'");
|
||||||
|
if (i < cmoidObj.size() - 1) {
|
||||||
|
sb.append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result = sb.toString();
|
||||||
|
} else {
|
||||||
|
result = "'" + (String) cmoidObj.get(0) + "'";
|
||||||
|
}
|
||||||
|
list.put("bipChildId", result); // 子项主键ID
|
||||||
|
|
||||||
|
}
|
||||||
|
pushData(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送同步数据
|
||||||
|
*/
|
||||||
|
private void pushData(JSONObject param) throws BusinessException {
|
||||||
|
// 转json字符串的时候保留null值
|
||||||
|
String jsonStr = JSON.toJSONString(param,
|
||||||
|
SerializerFeature.WriteMapNullValue,
|
||||||
|
SerializerFeature.WriteNullStringAsEmpty
|
||||||
|
);
|
||||||
|
logger.error("gyMes-PMO-param = " + jsonStr);
|
||||||
|
String baseUrl = configParams.get("mesBaseUrl");
|
||||||
|
String requestUrl = baseUrl + configParams.get("productionOrderCancel");
|
||||||
|
logger.error("gyMes-PMO-url = " + requestUrl);
|
||||||
|
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
|
||||||
|
JSONObject resultObj = JSONObject.parseObject(result);
|
||||||
|
logger.error("gyMes-PMO-res = " + result);
|
||||||
|
|
||||||
|
if (!"200".equals(resultObj.getString("code"))) {
|
||||||
|
logger.error("gyMes-PMO-error,result[" + resultObj.toJSONString() + "]");
|
||||||
|
throw new BusinessException("流程生产订单推送高压MES错误:" + resultObj.getString("msg"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException {
|
||||||
|
String targetCode = configParams.get("gyOrg");
|
||||||
|
if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {
|
||||||
|
throw new BusinessException("未配置组织参数");
|
||||||
|
}
|
||||||
|
String[] orgItem = targetCode.split(",");
|
||||||
|
for (String orgCode : orgItem) {
|
||||||
|
if (!orgCode.isEmpty() && orgCode.equals(code)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ import java.util.*;
|
||||||
* @date 2025/9/27
|
* @date 2025/9/27
|
||||||
*/
|
*/
|
||||||
public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
|
private String auditFlag;
|
||||||
private static final String LOG_INFO_NAME = "gymeslog";
|
private static final String LOG_INFO_NAME = "gymeslog";
|
||||||
private static final Log logger = Log.getInstance(LOG_INFO_NAME);
|
private static final Log logger = Log.getInstance(LOG_INFO_NAME);
|
||||||
private Map<String, String> configParams;
|
private Map<String, String> configParams;
|
||||||
|
|
@ -34,6 +34,10 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
// IMS数据源
|
// IMS数据源
|
||||||
public BaseDAO imsDao;
|
public BaseDAO imsDao;
|
||||||
|
|
||||||
|
public AfterApproveSyncImsRule(String auditFlag) {
|
||||||
|
this.auditFlag = auditFlag;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取IMS数据源
|
* 获取IMS数据源
|
||||||
*/
|
*/
|
||||||
|
|
@ -66,11 +70,19 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
|
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
|
||||||
"ninastnum", "ninnum"
|
"ninastnum", "ninnum"
|
||||||
));
|
));
|
||||||
|
// 表头-翻译字段
|
||||||
|
private Set<String> headTransferFields = new HashSet<>(Arrays.asList(
|
||||||
|
"pk_org", "cplanfactoryid", "approver", "billmaker", "creator"
|
||||||
|
));
|
||||||
// 表体-定义数值类型字段列表
|
// 表体-定义数值类型字段列表
|
||||||
Set<String> bodyNumFields = new HashSet<>(Arrays.asList(
|
private Set<String> bodyNumFields = new HashSet<>(Arrays.asList(
|
||||||
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
|
"nnum", "nastnum", "nplanputastnum", "nplanputnum", "nmmastnum", "nmmnum",
|
||||||
"ninastnum", "ninnum"
|
"ninastnum", "ninnum"
|
||||||
));
|
));
|
||||||
|
// 表体-翻译字段
|
||||||
|
private Set<String> bodyTransferFields = new HashSet<>(Arrays.asList(
|
||||||
|
"pk_org", "cmaterialvid", "cunitid", "castunitid", "cdeptid", "mocloser", "cinwarehouseid", "vbdef31"
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -98,9 +110,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
String pkOrg = pmoHeadVO.getPk_org();
|
String pkOrg = pmoHeadVO.getPk_org();
|
||||||
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
|
||||||
if (checkIfOrg(orgCode, configParams)) {
|
if (checkIfOrg(orgCode, configParams)) {
|
||||||
// continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取主键值
|
// 获取主键值
|
||||||
String headPrimaryKeyValue = (String) pmoHeadVO.getAttributeValue("cpmohid");
|
String headPrimaryKeyValue = (String) pmoHeadVO.getAttributeValue("cpmohid");
|
||||||
|
|
||||||
|
|
@ -197,7 +208,7 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) {
|
private SQLParameter buildHeadParameters(PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException {
|
||||||
SQLParameter headParams = new SQLParameter();
|
SQLParameter headParams = new SQLParameter();
|
||||||
|
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
|
|
@ -210,14 +221,20 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
Object value = pmoHeadVO.getAttributeValue(column);
|
Object value = pmoHeadVO.getAttributeValue(column);
|
||||||
if (headNumFields.contains(column)) {
|
if (headNumFields.contains(column)) {
|
||||||
value = skipNullForNumber(value);
|
value = skipNullForNumber(value);
|
||||||
|
} else if (headTransferFields.contains(column)) {
|
||||||
|
value = transferHeadFields(column, value);
|
||||||
} else {
|
} else {
|
||||||
value = skipNull(value);
|
value = skipNull(value);
|
||||||
}
|
}
|
||||||
headParams.addParam(value);
|
headParams.addParam(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// status C=创建U=修改2=处理完成
|
// status 同步状态:BIP:C-创建;U-修改D-删除 IMS:2-MES单据接收完成
|
||||||
headParams.addParam("U"); // 更新状态为U(修改)
|
if ("N".equals(auditFlag)) {
|
||||||
|
headParams.addParam("D");
|
||||||
|
} else {
|
||||||
|
headParams.addParam("U"); // 更新状态为U(修改)
|
||||||
|
}
|
||||||
// 添加主键作为WHERE条件
|
// 添加主键作为WHERE条件
|
||||||
headParams.addParam(pmoHeadVO.getAttributeValue("cpmohid"));
|
headParams.addParam(pmoHeadVO.getAttributeValue("cpmohid"));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -229,19 +246,21 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
Object value = pmoHeadVO.getAttributeValue(column);
|
Object value = pmoHeadVO.getAttributeValue(column);
|
||||||
if (headNumFields.contains(column)) {
|
if (headNumFields.contains(column)) {
|
||||||
value = skipNullForNumber(value);
|
value = skipNullForNumber(value);
|
||||||
|
} else if (headTransferFields.contains(column)) {
|
||||||
|
value = transferHeadFields(column, value);
|
||||||
} else {
|
} else {
|
||||||
value = skipNull(value);
|
value = skipNull(value);
|
||||||
}
|
}
|
||||||
headParams.addParam(value);
|
headParams.addParam(value);
|
||||||
}
|
}
|
||||||
// status C=创建U=修改2=处理完成
|
// status 同步状态:BIP:C-创建;U-修改D-删除 IMS:2-MES单据接收完成
|
||||||
headParams.addParam("C"); // 默认状态为C(新增)
|
headParams.addParam("C"); // 默认状态为C(新增)
|
||||||
}
|
}
|
||||||
|
|
||||||
return headParams;
|
return headParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) {
|
private SQLParameter buildBodyParameters(PMOItemVO item, PMOHeadVO pmoHeadVO, boolean isUpdate) throws BusinessException {
|
||||||
SQLParameter bodyParams = new SQLParameter();
|
SQLParameter bodyParams = new SQLParameter();
|
||||||
|
|
||||||
if (isUpdate) {
|
if (isUpdate) {
|
||||||
|
|
@ -257,6 +276,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
// 数值字段需要特殊处理空值
|
// 数值字段需要特殊处理空值
|
||||||
if (bodyNumFields.contains(column)) {
|
if (bodyNumFields.contains(column)) {
|
||||||
value = skipNullForNumber(value);
|
value = skipNullForNumber(value);
|
||||||
|
} else if (bodyTransferFields.contains(column)) {
|
||||||
|
value = transferBodyFields(column, value);
|
||||||
} else {
|
} else {
|
||||||
value = skipNull(value);
|
value = skipNull(value);
|
||||||
}
|
}
|
||||||
|
|
@ -277,6 +298,8 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
// 数值字段需要特殊处理空值
|
// 数值字段需要特殊处理空值
|
||||||
if (bodyNumFields.contains(column)) {
|
if (bodyNumFields.contains(column)) {
|
||||||
value = skipNullForNumber(value);
|
value = skipNullForNumber(value);
|
||||||
|
} else if (bodyTransferFields.contains(column)) {
|
||||||
|
value = transferBodyFields(column, value);
|
||||||
} else {
|
} else {
|
||||||
value = skipNull(value);
|
value = skipNull(value);
|
||||||
}
|
}
|
||||||
|
|
@ -352,7 +375,60 @@ public class AfterApproveSyncImsRule implements IRule<PMOAggVO> {
|
||||||
NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql);
|
NCCForUAPLogger.debug("gyIms-PMO-bodySql = " + bodySql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// logger.error("gyIms-PMO-res = " + result);
|
}
|
||||||
|
|
||||||
|
private String transferHeadFields(String column, Object value) throws BusinessException {
|
||||||
|
String result = "";
|
||||||
|
if (value == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' ";
|
||||||
|
if ("approver".equals(column) || "billmaker".equals(column) || "creator".equals(column)) {
|
||||||
|
userSql = userSql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor());
|
||||||
|
} else if ("pk_org".equals(column)) {
|
||||||
|
String sql = " select code from org_factory where nvl(dr,0) = 0 and pk_factory = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
} else if ("cplanfactoryid".equals(column)) {
|
||||||
|
String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String transferBodyFields(String column, Object value) throws BusinessException {
|
||||||
|
String result = "";
|
||||||
|
if (value == null || "".equals(value) || "~".equals(value)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String userSql = " select user_code from sm_user where dr = 0 and cuserid = '[value]' ";
|
||||||
|
if ("mocloser".equals(column)) {
|
||||||
|
userSql = userSql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(userSql, new ColumnProcessor());
|
||||||
|
} else if ("pk_org".equals(column)) {
|
||||||
|
String sql = " select code from org_orgs where nvl(dr,0) = 0 and pk_org = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
} else if ("cmaterialvid".equals(column)) {
|
||||||
|
String sql = " select code from bd_material where nvl(dr,0) = 0 and pk_material = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
} else if ("cunitid".equals(column) || "castunitid".equals(column)) {
|
||||||
|
String sql = " select code from bd_measdoc where nvl(dr,0) = 0 and pk_measdoc = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
} else if ("cdeptid".equals(column)) {
|
||||||
|
String sql = " select code from org_dept where nvl(dr,0) = 0 and pk_dept = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
} else if ("cinwarehouseid".equals(column) || "vbdef31".equals(column)) {
|
||||||
|
String sql = " select code from bd_stordoc where nvl(dr,0) = 0 and pk_stordoc = '[value]' ";
|
||||||
|
sql = sql.replace("[value]", value.toString());
|
||||||
|
result = (String) baseDAO.executeQuery(sql, new ColumnProcessor());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,201 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.impl.so.m30.action.main;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import nc.bs.pub.action.N_30_UNAPPROVE;
|
||||||
|
import nc.bs.scmpub.rule.VOSagaFrozenValidateRule;
|
||||||
|
import nc.bs.so.m30.maintain.rule.insert.RewritePromotePriceInsertRule;
|
||||||
|
import nc.bs.so.m30.plugin.Action30PlugInPoint;
|
||||||
|
import nc.bs.so.m30.rule.approve.CheckPush5Aor20Rule;
|
||||||
|
import nc.bs.so.m30.rule.approve.SaleOrderDeleteRmBeforeRule;
|
||||||
|
import nc.bs.so.m30.rule.atp.SaleOrderVOATPAfterRule;
|
||||||
|
import nc.bs.so.m30.rule.atp.SaleOrderVOATPBeforeRule;
|
||||||
|
import nc.bs.so.m30.rule.credit.RenovateARByHidsBeginRule;
|
||||||
|
import nc.bs.so.m30.rule.credit.RenovateARByHidsEndRule;
|
||||||
|
import nc.bs.so.m30.rule.m35.Rewrite35WhenUnApproveRule;
|
||||||
|
import nc.bs.so.m30.rule.me.SaleOrderVOUnApproveAfterRule;
|
||||||
|
import nc.bs.so.m30.rule.unapprove.BusiLog;
|
||||||
|
import nc.bs.so.m30.rule.unapprove.CheckUnApprovableCompensateRule;
|
||||||
|
import nc.bs.so.m30.rule.unapprove.CheckUnApprovableRule;
|
||||||
|
import nc.bs.so.m30.rule.unapprove.DeleteMessageRule;
|
||||||
|
import nc.bs.so.m30.rule.unapprove.UNApproveStateRule;
|
||||||
|
import nc.impl.pubapp.pattern.data.vo.VOUpdate;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||||
|
import nc.itf.scmpub.reference.uap.group.SysInitGroupQuery;
|
||||||
|
import nc.vo.credit.engrossmaintain.pub.action.M30EngrossAction;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.pub.lang.UFBoolean;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.pubapp.pattern.log.TimeLog;
|
||||||
|
import nc.vo.scmpub.util.AppInfoContext;
|
||||||
|
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||||
|
import nc.vo.so.m30.entity.SaleOrderHVO;
|
||||||
|
import nc.vo.so.m30.entity.SaleOrderVO;
|
||||||
|
import nc.vo.so.pub.enumeration.BillStatus;
|
||||||
|
import nc.vo.so.pub.rule.SOPfStatusChgRule;
|
||||||
|
import nccloud.bs.so.mobile.saleorder.operation.rule.MobAfterUnApproveMessageRule;
|
||||||
|
|
||||||
|
public class UnApproveSaleOrderAction {
|
||||||
|
public UnApproveSaleOrderAction() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleOrderVO[] unApprove(SaleOrderVO[] bills, N_30_UNAPPROVE script) {
|
||||||
|
SaleOrderVO[] ret = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
AroundProcesser<SaleOrderVO> processer = new AroundProcesser(Action30PlugInPoint.UnApproveAction);
|
||||||
|
Integer oldbillstatus = bills[0].getParentVO().getFstatusflag();
|
||||||
|
TimeLog.logStart();
|
||||||
|
this.setAppInfoContext();
|
||||||
|
this.addBeforeRule(processer, oldbillstatus);
|
||||||
|
processer.before(bills);
|
||||||
|
TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0162"));
|
||||||
|
script.procUnApproveFlow(script.getPfParameterVO());
|
||||||
|
SaleOrderVO[] newbills = script.getVos();
|
||||||
|
this.updateNewBillStatus(newbills);
|
||||||
|
Integer newbillstatus = newbills[0].getParentVO().getFstatusflag();
|
||||||
|
TimeLog.logStart();
|
||||||
|
this.addAfterRule(processer, newbillstatus, oldbillstatus);
|
||||||
|
processer.after(newbills);
|
||||||
|
TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006011_0", "04006011-0163"));
|
||||||
|
this.clearAppInfoContext();
|
||||||
|
ret = newbills;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ExceptionUtils.wrappException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateNewBillStatus(SaleOrderVO[] newbills) {
|
||||||
|
List<String> pk_org = new ArrayList();
|
||||||
|
new HashMap();
|
||||||
|
|
||||||
|
for(SaleOrderVO vo : newbills) {
|
||||||
|
for(SaleOrderBVO bvo : vo.getChildrenVO()) {
|
||||||
|
String csettleorgid = bvo.getCsettleorgid();
|
||||||
|
if (!pk_org.contains(csettleorgid)) {
|
||||||
|
pk_org.add(csettleorgid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Boolean> isEnable = SysInitGroupQuery.isRMEnabled(pk_org);
|
||||||
|
|
||||||
|
for(SaleOrderVO vo : newbills) {
|
||||||
|
List<SaleOrderBVO> newbvo = new ArrayList();
|
||||||
|
|
||||||
|
for(SaleOrderBVO bvo : vo.getChildrenVO()) {
|
||||||
|
String csettleorgid = bvo.getCsettleorgid();
|
||||||
|
if (!isEnable.isEmpty() && !(Boolean)isEnable.get(csettleorgid)) {
|
||||||
|
bvo.setRmcontractbflag(UFBoolean.FALSE);
|
||||||
|
} else {
|
||||||
|
newbvo.add(bvo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SOPfStatusChgRule statuschgrule = new SOPfStatusChgRule();
|
||||||
|
SaleOrderHVO[] updateheads = new SaleOrderHVO[newbills.length];
|
||||||
|
List<SaleOrderBVO> listbody = new ArrayList();
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for(SaleOrderVO ordervo : newbills) {
|
||||||
|
statuschgrule.changePfToBillStatus(ordervo);
|
||||||
|
updateheads[i] = ordervo.getParentVO();
|
||||||
|
|
||||||
|
for(SaleOrderBVO bvo : ordervo.getChildrenVO()) {
|
||||||
|
listbody.add(bvo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] headupname = new String[]{"fstatusflag"};
|
||||||
|
VOUpdate<SaleOrderHVO> headupsrv = new VOUpdate();
|
||||||
|
headupsrv.update(updateheads, headupname);
|
||||||
|
String[] bodyupname = new String[]{"frowstatus", "rmcontractbflag"};
|
||||||
|
VOUpdate<SaleOrderBVO> bodyupsrv = new VOUpdate();
|
||||||
|
SaleOrderBVO[] updatebodys = (SaleOrderBVO[])listbody.toArray(new SaleOrderBVO[listbody.size()]);
|
||||||
|
bodyupsrv.update(updatebodys, bodyupname);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAfterRule(AroundProcesser<SaleOrderVO> processer, Integer newbillstatus, Integer oldbillstatus) {
|
||||||
|
IRule<SaleOrderVO> rule = null;
|
||||||
|
if (SysInitGroupQuery.isCREDITEnabled()) {
|
||||||
|
IRule<SaleOrderVO> var6 = new RenovateARByHidsEndRule(M30EngrossAction.M30UnApprove);
|
||||||
|
processer.addAfterRule(var6);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BillStatus.FREE.equalsValue(newbillstatus) || BillStatus.NOPASS.equalsValue(newbillstatus) || BillStatus.AUDITING.equalsValue(newbillstatus)) {
|
||||||
|
IRule<SaleOrderVO> var7 = new UNApproveStateRule();
|
||||||
|
processer.addAfterRule(var7);
|
||||||
|
processer.addAfterRule(new DeleteMessageRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
IRule<SaleOrderVO> var8 = new SaleOrderVOUnApproveAfterRule();
|
||||||
|
processer.addAfterRule(var8);
|
||||||
|
IRule<SaleOrderVO> var9 = new Rewrite35WhenUnApproveRule();
|
||||||
|
processer.addAfterRule(var9);
|
||||||
|
if (BillStatus.NOPASS.equalsValue(oldbillstatus)) {
|
||||||
|
boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
if (icEnable) {
|
||||||
|
IRule<SaleOrderVO> var10 = new SaleOrderVOATPAfterRule();
|
||||||
|
processer.addAfterRule(var10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IRule<SaleOrderVO> var11 = new MobAfterUnApproveMessageRule();
|
||||||
|
processer.addAfterRule(var11);
|
||||||
|
processer.addAfterRule(new SaleOrderDeleteRmBeforeRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addBeforeRule(AroundProcesser<SaleOrderVO> processer, Integer oldbillstatus) {
|
||||||
|
IRule<SaleOrderVO> rule = new VOSagaFrozenValidateRule();
|
||||||
|
processer.addBeforeRule(rule);
|
||||||
|
IRule<SaleOrderVO> var5 = new CheckPush5Aor20Rule();
|
||||||
|
processer.addBeforeRule(var5);
|
||||||
|
IRule<SaleOrderVO> var6 = new CheckUnApprovableRule();
|
||||||
|
processer.addBeforeRule(var6);
|
||||||
|
IRule<SaleOrderVO> var7 = new CheckUnApprovableCompensateRule();
|
||||||
|
processer.addBeforeRule(var7);
|
||||||
|
if (SysInitGroupQuery.isCREDITEnabled()) {
|
||||||
|
IRule<SaleOrderVO> var8 = new RenovateARByHidsBeginRule(M30EngrossAction.M30UnApprove);
|
||||||
|
processer.addBeforeRule(var8);
|
||||||
|
}
|
||||||
|
|
||||||
|
IRule<SaleOrderVO> var9 = new BusiLog();
|
||||||
|
processer.addBeforeRule(var9);
|
||||||
|
if (BillStatus.NOPASS.equalsValue(oldbillstatus)) {
|
||||||
|
if (SysInitGroupQuery.isPRICEEnabled()) {
|
||||||
|
IRule<SaleOrderVO> var10 = new RewritePromotePriceInsertRule();
|
||||||
|
processer.addAfterRule(var10);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean icEnable = SysInitGroupQuery.isICEnabled();
|
||||||
|
if (icEnable) {
|
||||||
|
IRule<SaleOrderVO> var11 = new SaleOrderVOATPBeforeRule();
|
||||||
|
processer.addBeforeRule(var11);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setAppInfoContext() {
|
||||||
|
String buttonCode = AppInfoContext.getBtnCode();
|
||||||
|
if ("".equals(buttonCode) || null == buttonCode) {
|
||||||
|
AppInfoContext.setBtnCode("unappoveCenter");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearAppInfoContext() {
|
||||||
|
AppInfoContext.setBtnCode((String)null);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue