物料档案基本页签启用项目辅助属性+库存组织启用项目(包含主数据导入),计划、生产、财务成本页签对应业务单元自动启用项目辅助属性;

This commit is contained in:
lihao 2025-06-12 16:57:56 +08:00
parent cfb4c8d2fd
commit de285fb90e
1 changed files with 205 additions and 0 deletions

View File

@ -0,0 +1,205 @@
package nc.impl.bd.material.baseinfo;
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.jdbc.framework.SQLParameter;
import nc.jdbc.framework.processor.ColumnListProcessor;
import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.stock.MaterialStockVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.util.BDPKLockUtil;
import java.util.ArrayList;
import java.util.List;
public class MaterialStockAsstsChangedListener implements IBusinessListener {
private BaseDAO baseDAO = new BaseDAO();
public void doAction(IBusinessEvent iBusinessEvent) throws BusinessException {
if (iBusinessEvent instanceof BDCommonEvent event) {
//1库存信息修改生产厂商和项目后 更新计划信息生产信息和成本信息
this.dealMaterialStockAssts1(event, false);
}
}
private void dealMaterialStockAssts1(BDCommonEvent event, boolean isBatchUp) throws BusinessException {
for(int i = 0; i < event.getNewObjs().length; ++i) {
MaterialStockVO newVO = (MaterialStockVO)event.getNewObjs()[i];
String pk_material = newVO.getPk_material();
String pk_marasstframe = this.getmarasstframe(pk_material).get(0);
if (!isBatchUp) {
BDPKLockUtil.lockString(new String[]{pk_material});
}
if(pk_marasstframe == null){
return;
}
//如果库存信息生产厂商和项目被选中则 更新计划信息生产信息和成本信息
UFBoolean fixasst2 = newVO.getFixasst2();
UFBoolean fixasst4 = newVO.getFixasst4();
List<String> fixlist=new ArrayList();
if(fixasst2.booleanValue()){
fixlist.add("2");
}
if(fixasst4.booleanValue()){
fixlist.add("4");
}
if(fixlist.isEmpty()){
return;
}else{
//成本
this.updateMaterialCostUpdateAssts(fixlist,newVO.getPk_org(), pk_material);
//生产信息
this.updateMaterialProdAssts(fixlist,newVO.getPk_org(), pk_material);
//更新计划信息
this.updateMaterialPlanAssts(fixlist,newVO.getPk_org(), pk_material);
}
}
}
private List<String> getmarasstframe(String materialVID) throws BusinessException {
String sql = "select pk_marasstframe from " + MaterialVO.getDefaultTableName() + " where pk_material = ? ";
SQLParameter param = new SQLParameter();
param.addParam(materialVID);
return (List)this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor());
}
private BaseDAO getBaseDAO() {
if (this.baseDAO == null) {
this.baseDAO = new BaseDAO();
}
return this.baseDAO;
}
private void updateMaterialCostUpdateAssts(List<String> fixlist,String pk_org, String pk_material) throws BusinessException {
//查询成本信息
String sql = "SELECT " +
" pk_materialcost " +
"FROM " +
" bd_materialcost " +
"WHERE " +
" pk_org = (SELECT PK_COSTREGION FROM org_cr_stockorg WHERE pk_stockorg= ?) " +
" AND " +
" pk_material = ? ";
SQLParameter param = new SQLParameter();
param.addParam(pk_org);
param.addParam(pk_material);
List list =( (List) this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor()));
String pk_materialcost = list.get(0).toString();
if(pk_materialcost == null){
return;
}
//更新计价方式
String update2 = "update bd_materialcostmod set marasst2 = ? where pk_materialcost = ? ";
String update4 = "update bd_materialcostmod set marasst4 = ? where pk_materialcost = ? ";
String update24 = "update bd_materialcostmod set marasst2 = ?,marasst4 = ? where pk_materialcost = ? ";
if(fixlist.contains("2") && fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update24, param1);
}else if(fixlist.contains("2")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update2, param1);
}else if(fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update4, param1);
}
}
private void updateMaterialProdAssts(List<String> fixlist,String pk_org, String pk_material) throws DAOException {
//查询成本信息
String sql = "SELECT " +
" pk_materialprod " +
"FROM " +
" bd_materialprod " +
"WHERE " +
" pk_org = ? and " +
" pk_material = ? ";
SQLParameter param = new SQLParameter();
param.addParam(pk_org);
param.addParam(pk_material);
List list =( (List) this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor()));
String pk_materialcost = list.get(0).toString();
if(pk_materialcost == null){
return;
}
//更新计价方式
String update2 = "update bd_materialprod set costvalutasst2 = ? where pk_materialprod = ? ";
String update4 = "update bd_materialprod set costvalutasst4 = ? where pk_materialprod = ? ";
String update24 = "update bd_materialprod set costvalutasst2 = ?,costvalutasst4 = ? where pk_materialprod = ? ";
if(fixlist.contains("2") && fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update24, param1);
}else if(fixlist.contains("2")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update2, param1);
}else if(fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update4, param1);
}
}
private void updateMaterialPlanAssts(List<String> fixlist,String pk_org, String pk_material) throws DAOException {
//查询成本信息
String sql = "SELECT " +
" pk_materialplan " +
"FROM " +
" bd_materialplan " +
"WHERE " +
" pk_org = ? and " +
" pk_material = ? ";
SQLParameter param = new SQLParameter();
param.addParam(pk_org);
param.addParam(pk_material);
List list =( (List) this.getBaseDAO().executeQuery(sql, param, new ColumnListProcessor()));
String pk_materialcost = list.get(0).toString();
if(pk_materialcost == null){
return;
}
//更新计价方式
String update2 = "update bd_materialplan set marasst2 = ? where pk_materialplan = ? ";
String update4 = "update bd_materialplan set marasst4 = ? where pk_materialplan = ? ";
String update24 = "update bd_materialplan set marasst2 = ?,marasst4 = ? where pk_materialplan = ? ";
if(fixlist.contains("2") && fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update24, param1);
}else if(fixlist.contains("2")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update2, param1);
}else if(fixlist.contains("4")){
SQLParameter param1 = new SQLParameter();
param1.addParam("Y");
param1.addParam(pk_materialcost);
this.getBaseDAO().executeUpdate(update4, param1);
}
}
}