bom替代料接口调整

This commit is contained in:
mzr 2025-09-15 21:44:33 +08:00
parent 5d68e40f57
commit 84ad04810b
3 changed files with 1847 additions and 1818 deletions

View File

@ -1,5 +1,7 @@
package nccloud.api.impl.mmbd.bom; package nccloud.api.impl.mmbd.bom;
import nc.bs.bd.bom.bom0202.bp.BomPubBP;
import nc.bs.bd.bom.bom0202.bp.BomUpdateBP;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator; import nc.bs.framework.common.NCLocator;
@ -24,9 +26,12 @@ import nc.util.mmf.busi.measure.MeasureParam;
import nc.util.mmf.busi.measure.MeasureVO; import nc.util.mmf.busi.measure.MeasureVO;
import nc.util.mmf.busi.measure.NumScaleUtil; import nc.util.mmf.busi.measure.NumScaleUtil;
import nc.util.mmf.busi.service.OrgUnitPubService; import nc.util.mmf.busi.service.OrgUnitPubService;
import nc.util.mmf.framework.base.MMArrayUtil;
import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.base.MMValueCheck;
import nc.util.mmf.framework.gc.GCBillTransferTool;
import nc.vo.bd.bom.bom0202.entity.*; import nc.vo.bd.bom.bom0202.entity.*;
import nc.vo.bd.bom.bom0202.enumeration.*; import nc.vo.bd.bom.bom0202.enumeration.*;
import nc.vo.bd.bom.bom0202.message.MMBDLangConstBom0202;
import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlParam; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlParam;
import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlResult; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlResult;
import nc.vo.bd.bom.bom0202.paramvo.BomMaterialParam; import nc.vo.bd.bom.bom0202.paramvo.BomMaterialParam;
@ -127,7 +132,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class); IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class);
for (AggBomVO aggtwo : aggVOs) { for (AggBomVO aggtwo : aggVOs) {
BomItemVO[] items = aggtwo.getChildrenVO(); BomItemVO[] items = aggtwo.getChildrenVO();
//2025年5月9日08点56分--添加表头物料翻译校验 start // 2025年5月9日08点56分--添加表头物料翻译校验 start
if (aggtwo.getParent().getAttributeValue("hcmaterialid") != null) { if (aggtwo.getParent().getAttributeValue("hcmaterialid") != null) {
MaterialVO headMaterialVO = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class, MaterialVO headMaterialVO = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class,
aggtwo.getParent().getAttributeValue("hcmaterialid").toString()); aggtwo.getParent().getAttributeValue("hcmaterialid").toString());
@ -135,15 +140,15 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
ExceptionUtils.wrappBusinessException("根据物料【" + aggtwo.getParent().getAttributeValue("hcmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在"); ExceptionUtils.wrappBusinessException("根据物料【" + aggtwo.getParent().getAttributeValue("hcmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在");
} }
} }
//2025年5月9日08点56分--添加表头物料翻译校验 end // 2025年5月9日08点56分--添加表头物料翻译校验 end
for (int i = 0; i < items.length; i++) { for (int i = 0; i < items.length; i++) {
MaterialVO bankAccSub = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class, MaterialVO bankAccSub = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class,
items[i].getAttributeValue("cmaterialid").toString()); items[i].getAttributeValue("cmaterialid").toString());
//2025年5月7日08点41分 添加为空校验 sdlizheng --start // 2025年5月7日08点41分 添加为空校验 sdlizheng --start
if (bankAccSub == null) { if (bankAccSub == null) {
ExceptionUtils.wrappBusinessException("根据物料【" + items[i].getAttributeValue("cmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在"); ExceptionUtils.wrappBusinessException("根据物料【" + items[i].getAttributeValue("cmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在");
} }
//2025年5月7日08点41分 添加为空校验 sdlizheng --end // 2025年5月7日08点41分 添加为空校验 sdlizheng --end
items[i].setAttributeValue("cmaterialvid", bankAccSub.getAttributeValue("pk_source")); items[i].setAttributeValue("cmaterialvid", bankAccSub.getAttributeValue("pk_source"));
} }
} }
@ -184,7 +189,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
result = service.insertBom((AggBomVO[]) addAggvoList.toArray(new AggBomVO[0])); result = service.insertBom((AggBomVO[]) addAggvoList.toArray(new AggBomVO[0]));
} else if (!commitAggvoList.isEmpty() && addAggvoList.isEmpty()) { } else if (!commitAggvoList.isEmpty() && addAggvoList.isEmpty()) {
List<AggBomVO> newAggVOList = new ArrayList<>(); List<AggBomVO> newAggVOList = new ArrayList<>();
if ("gaoning".equals(userCode) || "C029".equals(orgCodeFlag)) { if ("gaoning".equals(userCode) || "C029".equals(orgCodeFlag) || "dldzspplm".equals(userCode)) {
for (AggBomVO aggvo : commitAggvoList) { for (AggBomVO aggvo : commitAggvoList) {
result = service.insertCommitBomWithParam(new AggBomVO[]{aggvo}, true, true); result = service.insertCommitBomWithParam(new AggBomVO[]{aggvo}, true, true);
insertBomMatchRt(result); insertBomMatchRt(result);
@ -284,7 +289,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
AggBomVO aggBomVO = result[0]; AggBomVO aggBomVO = result[0];
BomVO bomVO = (BomVO) aggBomVO.getParentVO(); BomVO bomVO = (BomVO) aggBomVO.getParentVO();
BomItemVO[] bomItemVOs = aggBomVO.getChildrenVO(); BomItemVO[] bomItemVOs = aggBomVO.getChildrenVO();
SuperVOUtil.sortByAttributeName(bomItemVOs,"cbeginperiod",false); SuperVOUtil.sortByAttributeName(bomItemVOs, "cbeginperiod", false);
BomMatchRtVO bomMatchRtVO = new BomMatchRtVO(); BomMatchRtVO bomMatchRtVO = new BomMatchRtVO();
bomMatchRtVO.setStatus(VOStatus.NEW); bomMatchRtVO.setStatus(VOStatus.NEW);
@ -380,7 +385,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
BillFieldsCodeToPkUtil.doTranslateVOFields(aggVOs); BillFieldsCodeToPkUtil.doTranslateVOFields(aggVOs);
IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class); IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class);
for (AggBomVO aggtwo : aggVOs) { for (AggBomVO aggtwo : aggVOs) {
//2025年5月9日08点56分--添加表头物料翻译校验 start // 2025年5月9日08点56分--添加表头物料翻译校验 start
if (aggtwo.getParent().getAttributeValue("hcmaterialid") != null) { if (aggtwo.getParent().getAttributeValue("hcmaterialid") != null) {
MaterialVO headMaterialVO = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class, MaterialVO headMaterialVO = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class,
aggtwo.getParent().getAttributeValue("hcmaterialid").toString()); aggtwo.getParent().getAttributeValue("hcmaterialid").toString());
@ -388,16 +393,16 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
ExceptionUtils.wrappBusinessException("根据物料【" + aggtwo.getParent().getAttributeValue("hcmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在"); ExceptionUtils.wrappBusinessException("根据物料【" + aggtwo.getParent().getAttributeValue("hcmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在");
} }
} }
//2025年5月9日08点56分--添加表头物料翻译校验 end // 2025年5月9日08点56分--添加表头物料翻译校验 end
BomItemVO[] items = aggtwo.getChildrenVO(); BomItemVO[] items = aggtwo.getChildrenVO();
for (int i = 0; i < items.length; i++) { for (int i = 0; i < items.length; i++) {
MaterialVO bankAccSub = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class, MaterialVO bankAccSub = (MaterialVO) iUifService.queryByPrimaryKey(MaterialVO.class,
items[i].getAttributeValue("cmaterialid").toString()); items[i].getAttributeValue("cmaterialid").toString());
//2025年5月7日08点41分 添加为空校验 sdlizheng --start // 2025年5月7日08点41分 添加为空校验 sdlizheng --start
if (bankAccSub == null) { if (bankAccSub == null) {
ExceptionUtils.wrappBusinessException("根据物料【" + items[i].getAttributeValue("cmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在"); ExceptionUtils.wrappBusinessException("根据物料【" + items[i].getAttributeValue("cmaterialid").toString() + "】查询物料失败请在BIP里确认是否物料已存在");
} }
//2025年5月7日08点41分 添加为空校验 sdlizheng --end // 2025年5月7日08点41分 添加为空校验 sdlizheng --end
items[i].setAttributeValue("cmaterialvid", bankAccSub.getAttributeValue("pk_source")); items[i].setAttributeValue("cmaterialvid", bankAccSub.getAttributeValue("pk_source"));
} }
} }
@ -458,6 +463,35 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
} }
} }
public AggBomVO[] updateBomWithParam(AggBomVO[] aggvos, boolean isFromBom, boolean isecn, boolean isCheckEcn,
boolean isOnApprove) throws BusinessException {
if (MMArrayUtil.isEmpty(aggvos)) {
return null;
}
try {
// 检查该BOM是否被删除因为如果BOM树状维护将BOM删除了不允许修改该条记录
Set<String> bomids = new HashSet<String>();
for (AggBomVO vo : aggvos) {
bomids.add(vo.getPrimaryKey());
}
Set<String> checkResult = BomPubBP.getBomID(bomids.toArray(new String[]{}));
if (checkResult != null && checkResult.size() < bomids.size()) {
nc.vo.pubapp.pattern.exception.ExceptionUtils.wrappBusinessException(MMBDLangConstBom0202.getBOM_DELETED());
}
// 加锁 + 检查ts
GCBillTransferTool<AggBomVO> transTool = new GCBillTransferTool<AggBomVO>(aggvos);
// 补全前台VO
AggBomVO[] fullBills = transTool.getClientFullInfoBill();
// 获得修改前vo
AggBomVO[] originBills = transTool.getOriginBills();
BomUpdateBP bp = new BomUpdateBP();
return bp.update(fullBills, originBills, isCheckEcn, isOnApprove, isFromBom, isecn);
} catch (Exception e) {
nc.vo.pubapp.pattern.exception.ExceptionUtils.marsh(e);
}
return null;
}
private void mapInit(AggBomVO aggs) { private void mapInit(AggBomVO aggs) {
tsMap.put(aggs.getParent().getPrimaryKey(), aggs.getParent().getAttributeValue("ts")); tsMap.put(aggs.getParent().getPrimaryKey(), aggs.getParent().getAttributeValue("ts"));
@ -841,7 +875,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode) || "C029".equals(this.orgCodeFlag) || "hgqwms".equals(userCode)) { if ("gaoning".equals(userCode) || "dlkgsrm".equals(userCode) || "C029".equals(this.orgCodeFlag) || "hgqwms".equals(userCode)) {
// AggBomVO afterVO = service.canceldefault(aggBomVO); // AggBomVO afterVO = service.canceldefault(aggBomVO);
} else if (MESUSERCODE.equals(userCode)) { } else if (MESUSERCODE.equals(userCode)) {
//2025-6-20 添加MES用户判断 // 2025-6-20 添加MES用户判断
} else { } else {
return UFBoolean.TRUE; return UFBoolean.TRUE;
} }
@ -1442,26 +1476,26 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
return items; return items;
} }
public BomItemVO[] handleEventTwo( AggBomVO agg) throws MetaDataException { public BomItemVO[] handleEventTwo(AggBomVO agg) throws MetaDataException {
IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class); IUifService iUifService = NCLocator.getInstance().lookup(IUifService.class);
BomItemVO[] items = agg.getChildrenVO(); BomItemVO[] items = agg.getChildrenVO();
for(BomItemVO item : items) { for (BomItemVO item : items) {
StringBuffer whereSqlitem = new StringBuffer(); StringBuffer whereSqlitem = new StringBuffer();
whereSqlitem.append(" hcmaterialid = '"+item.getCmaterialid()+"'").append(" and dr ='0'"); whereSqlitem.append(" hcmaterialid = '" + item.getCmaterialid() + "'").append(" and dr ='0'");
Collection<AggBomVO> aggBomVOitem; Collection<AggBomVO> aggBomVOitem;
try { try {
aggBomVOitem = MDPersistenceService.lookupPersistenceQueryService().queryBillOfVOByCond(AggBomVO.class, whereSqlitem.toString(), false); aggBomVOitem = MDPersistenceService.lookupPersistenceQueryService().queryBillOfVOByCond(AggBomVO.class, whereSqlitem.toString(), false);
if(Objects.nonNull(aggBomVOitem)&&!aggBomVOitem.isEmpty() ) { if (Objects.nonNull(aggBomVOitem) && !aggBomVOitem.isEmpty()) {
StringBuffer whereSql = new StringBuffer(); StringBuffer whereSql = new StringBuffer();
whereSql.append(" hcmaterialid = '"+item.getCmaterialid()+"'").append(" and hvdef3 ='"+agg.getParent().getAttributeValue("hvdef3")+"'").append(" and hvdef2 ='"+agg.getParent().getAttributeValue("hvdef2")+"'").append(" and dr ='0'"); whereSql.append(" hcmaterialid = '" + item.getCmaterialid() + "'").append(" and hvdef3 ='" + agg.getParent().getAttributeValue("hvdef3") + "'").append(" and hvdef2 ='" + agg.getParent().getAttributeValue("hvdef2") + "'").append(" and dr ='0'");
Collection<AggBomVO> aggBomVO; Collection<AggBomVO> aggBomVO;
aggBomVO = MDPersistenceService.lookupPersistenceQueryService().queryBillOfVOByCond(AggBomVO.class, whereSql.toString(), false); aggBomVO = MDPersistenceService.lookupPersistenceQueryService().queryBillOfVOByCond(AggBomVO.class, whereSql.toString(), false);
if(Objects.nonNull(aggBomVO) && aggBomVO.size()==1) { if (Objects.nonNull(aggBomVO) && aggBomVO.size() == 1) {
for (AggBomVO aggBom : aggBomVO) { for (AggBomVO aggBom : aggBomVO) {
item.setVitemversion(aggBom.getPrimaryKey()); item.setVitemversion(aggBom.getPrimaryKey());
} }
}else { } else {
nccloud.base.exception.ExceptionUtils.wrapBusinessException("根据条件未查出bom或者查出多条bom不唯一"+whereSql); nccloud.base.exception.ExceptionUtils.wrapBusinessException("根据条件未查出bom或者查出多条bom不唯一" + whereSql);
} }
} }
} catch (MetaDataException e1) { } catch (MetaDataException e1) {
@ -1472,6 +1506,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
return items; return items;
} }
void setMaterialInfo(Map<String, BomMaterialParam> materialMap, BomItemVO item) { void setMaterialInfo(Map<String, BomMaterialParam> materialMap, BomItemVO item) {
String materialvid = item.getCmaterialvid(); String materialvid = item.getCmaterialvid();
if (!materialMap.containsKey(materialvid)) { if (!materialMap.containsKey(materialvid)) {
@ -1620,7 +1655,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
|| MMValueCheck.isEmpty(fsupplymode) || MMValueCheck.isEmpty(fcontrol) || MMValueCheck.isEmpty(fsupplymode) || MMValueCheck.isEmpty(fcontrol)
|| MMValueCheck.isEmpty(cbeginperiod) || MMValueCheck.isEmpty(cendperiod) || MMValueCheck.isEmpty(cbeginperiod) || MMValueCheck.isEmpty(cendperiod)
|| MMValueCheck.isEmpty(fbackflushtype)) { || MMValueCheck.isEmpty(fbackflushtype)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,子表材料第" + i + 1 + ""+ cmaterialvid +"存在未填的必输项", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,子表材料第" + i + 1 + "" + cmaterialvid + "存在未填的必输项", "1");
} }
} }
@ -1634,7 +1669,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
String cmaterialvid = outputsVO.getCmaterialvid(); String cmaterialvid = outputsVO.getCmaterialvid();
if (MMValueCheck.isEmpty(foutputtype) || MMValueCheck.isEmpty(cmaterialvid)) { if (MMValueCheck.isEmpty(foutputtype) || MMValueCheck.isEmpty(cmaterialvid)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,联副产品第" + j + 1 + ""+cmaterialvid+"存在未填的必输项", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,联副产品第" + j + 1 + "" + cmaterialvid + "存在未填的必输项", "1");
} }
} }
@ -1766,9 +1801,10 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
* 2025年7月10日修改 - 改为根据自定义项hvdef4判断是否为定制BOM * 2025年7月10日修改 - 改为根据自定义项hvdef4判断是否为定制BOM
* 同步MES时只有标准版本的bom "默认"hbdefault 生效hfversiontype的等于1 * 同步MES时只有标准版本的bom "默认"hbdefault 生效hfversiontype的等于1
* 定制bomhvdef4值为Y取消 "默认"hbdefault值为N 但生效hfversiontype的等于1 * 定制bomhvdef4值为Y取消 "默认"hbdefault值为N 但生效hfversiontype的等于1
* @auther 毛磊 *
* @param agg AggBomVO对象 * @param agg AggBomVO对象
* @param userCode 用户代码 * @param userCode 用户代码
* @auther 毛磊
*/ */
private void handleMesUserDefaultSetting(AggBomVO agg, String userCode) { private void handleMesUserDefaultSetting(AggBomVO agg, String userCode) {
obmlog.debug("handleMesUserDefaultSetting - 开始处理MES用户的默认设置逻辑用户代码" + userCode); obmlog.debug("handleMesUserDefaultSetting - 开始处理MES用户的默认设置逻辑用户代码" + userCode);
@ -1793,7 +1829,7 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService {
if (isCustomBom) { if (isCustomBom) {
// 定制BOM取消默认但仍然生效 // 定制BOM取消默认但仍然生效
agg.getParent().setAttributeValue("hbdefault","N"); agg.getParent().setAttributeValue("hbdefault", "N");
obmlog.debug("handleMesUserDefaultSetting - 定制BOM取消默认(hbdefault=false)"); obmlog.debug("handleMesUserDefaultSetting - 定制BOM取消默认(hbdefault=false)");
} else { } else {
// 标准版本设置为默认且生效 // 标准版本设置为默认且生效

View File

@ -0,0 +1,24 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nccloud.api.mmbd.bom;
import java.util.List;
import java.util.Map;
import nc.vo.bd.bom.bom0202.entity.AggBomVO;
import nc.vo.pub.BusinessException;
import org.json.JSONString;
public interface IAPIBomBusinessService {
JSONString insert(List<Map<String, Object>> var1);
JSONString update(List<Map<String, Object>> var1);
JSONString query(Map<String, Object> var1);
AggBomVO[] updateBomWithParam(AggBomVO[] aggvos, boolean isFromBom, boolean isecn, boolean isCheckEcn,
boolean isOnApprove) throws BusinessException;
}

View File

@ -6,15 +6,6 @@
package nccloud.openapi.mmbd.bom; package nccloud.openapi.mmbd.bom;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import java.util.*;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import nc.bs.bd.bom.bom0202.bp.BomPubBP;
import nc.bs.bd.bom.bom0202.bp.BomUpdateBP;
import nc.bs.framework.common.NCLocator; import nc.bs.framework.common.NCLocator;
import nc.bs.trade.business.HYPubBO; import nc.bs.trade.business.HYPubBO;
import nc.itf.bd.bom.bom0202.IBomBillMaintainService; import nc.itf.bd.bom.bom0202.IBomBillMaintainService;
@ -22,13 +13,10 @@ import nc.itf.bd.bom.bom0202.IBomBillQueryService;
import nc.jdbc.framework.generator.IdGenerator; import nc.jdbc.framework.generator.IdGenerator;
import nc.mmbd.utils.factoryparam.MMBDFactoryParameter; import nc.mmbd.utils.factoryparam.MMBDFactoryParameter;
import nc.uif.pub.exception.UifException; import nc.uif.pub.exception.UifException;
import nc.util.mmf.framework.base.MMArrayUtil;
import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.base.MMValueCheck;
import nc.util.mmf.framework.gc.GCBillTransferTool;
import nc.vo.bd.bom.bom0202.entity.AggBomVO; import nc.vo.bd.bom.bom0202.entity.AggBomVO;
import nc.vo.bd.bom.bom0202.entity.BomItemVO; import nc.vo.bd.bom.bom0202.entity.BomItemVO;
import nc.vo.bd.bom.bom0202.entity.BomReplVO; import nc.vo.bd.bom.bom0202.entity.BomReplVO;
import nc.vo.bd.bom.bom0202.message.MMBDLangConstBom0202;
import nc.vo.ml.NCLangRes4VoTransl; import nc.vo.ml.NCLangRes4VoTransl;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nc.vo.pub.VOStatus; import nc.vo.pub.VOStatus;
@ -37,9 +25,18 @@ import nc.vo.pub.lang.UFDouble;
import nccloud.api.mmbd.bom.IAPIBomBusinessService; import nccloud.api.mmbd.bom.IAPIBomBusinessService;
import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.api.rest.utils.ResultMessageUtil;
import nccloud.framework.core.exception.ExceptionUtils; import nccloud.framework.core.exception.ExceptionUtils;
//import nccloud.framework.service.ServiceLocator;
import nccloud.ws.rest.resource.AbstractNCCRestResource; import nccloud.ws.rest.resource.AbstractNCCRestResource;
import org.json.JSONString; import org.json.JSONString;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Path("mmbd/bom") @Path("mmbd/bom")
public class BomResource extends AbstractNCCRestResource { public class BomResource extends AbstractNCCRestResource {
public BomResource() { public BomResource() {
@ -50,11 +47,11 @@ public class BomResource extends AbstractNCCRestResource {
@Consumes({"application/json"}) @Consumes({"application/json"})
@Produces({"application/json"}) @Produces({"application/json"})
public JSONString insert(JSONObject para) { public JSONString insert(JSONObject para) {
List<Map<String, Object>> paramList = (List)para.get("data"); List<Map<String, Object>> paramList = (List) para.get("data");
if (MMValueCheck.isEmpty(paramList)) { if (MMValueCheck.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1");
} else { } else {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
JSONString result = service.insert(paramList); JSONString result = service.insert(paramList);
return result; return result;
} }
@ -68,7 +65,7 @@ public class BomResource extends AbstractNCCRestResource {
if (MMValueCheck.isEmpty(paramList)) { if (MMValueCheck.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1");
} else { } else {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
JSONString result = service.insert(paramList); JSONString result = service.insert(paramList);
return result; return result;
} }
@ -79,11 +76,11 @@ public class BomResource extends AbstractNCCRestResource {
@Consumes({"application/json"}) @Consumes({"application/json"})
@Produces({"application/json"}) @Produces({"application/json"})
public JSONString update(JSONObject para) { public JSONString update(JSONObject para) {
List<Map<String, Object>> paramList = (List)para.get("data"); List<Map<String, Object>> paramList = (List) para.get("data");
if (MMValueCheck.isEmpty(paramList)) { if (MMValueCheck.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1");
} else { } else {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
JSONString result = service.update(paramList); JSONString result = service.update(paramList);
return result; return result;
} }
@ -97,7 +94,7 @@ public class BomResource extends AbstractNCCRestResource {
if (MMValueCheck.isEmpty(paramList)) { if (MMValueCheck.isEmpty(paramList)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,参数要包含表头信息和表体信息", "1");
} else { } else {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
JSONString result = service.update(paramList); JSONString result = service.update(paramList);
return result; return result;
} }
@ -111,7 +108,7 @@ public class BomResource extends AbstractNCCRestResource {
if (MMValueCheck.isEmpty(paramMap)) { if (MMValueCheck.isEmpty(paramMap)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,未传入查询条件", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,未传入查询条件", "1");
} else { } else {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
JSONString result = service.query(paramMap); JSONString result = service.query(paramMap);
return result; return result;
} }
@ -125,13 +122,12 @@ public class BomResource extends AbstractNCCRestResource {
if (MMValueCheck.isEmpty(paramMap)) { if (MMValueCheck.isEmpty(paramMap)) {
return ResultMessageUtil.exceptionToJSON("传入数据异常,未传入更新数据", "1"); return ResultMessageUtil.exceptionToJSON("传入数据异常,未传入更新数据", "1");
} else { } else {
try{ try {
IAPIBomBusinessService service = (IAPIBomBusinessService)NCLocator.getInstance().lookup(IAPIBomBusinessService.class); IAPIBomBusinessService service = (IAPIBomBusinessService) NCLocator.getInstance().lookup(IAPIBomBusinessService.class);
// List<> IBomBillQueryService qry = (IBomBillQueryService) NCLocator.getInstance().lookup(IBomBillQueryService.class);
IBomBillQueryService qry = (IBomBillQueryService)NCLocator.getInstance().lookup(IBomBillQueryService.class); IBomBillMaintainService bomBillMaintainService = (IBomBillMaintainService) NCLocator.getInstance().lookup(IBomBillMaintainService.class);
IBomBillMaintainService bomBillMaintainService = (IBomBillMaintainService)NCLocator.getInstance().lookup(IBomBillMaintainService.class);
List<AggBomVO> bomReplVOS = new ArrayList<>(); List<AggBomVO> bomReplVOS = new ArrayList<>();
for (Map<String, Object> param : paramMap) { for (Map<String, Object> param : paramMap) {
@ -206,7 +202,7 @@ public class BomResource extends AbstractNCCRestResource {
// 更新BOM // 更新BOM
aggBomVO.setChildrenVO(bomItemVOS); aggBomVO.setChildrenVO(bomItemVOS);
AggBomVO[] result = this.updateBomWithParam( AggBomVO[] result = service.updateBomWithParam(
new AggBomVO[]{aggBomVO}, new AggBomVO[]{aggBomVO},
false, false,
false, false,
@ -221,12 +217,13 @@ public class BomResource extends AbstractNCCRestResource {
return ResultMessageUtil.toJSON(bomReplVOS, "BOM更新成功"); return ResultMessageUtil.toJSON(bomReplVOS, "BOM更新成功");
}catch (BusinessException e) { } catch (BusinessException e) {
throw new RuntimeException(e); return ResultMessageUtil.exceptionToJSON(e);
} }
} }
} }
// 提取属性设置为工具方法减少冗余 // 提取属性设置为工具方法减少冗余
private void setReplVOProperties(BomReplVO replVO, Map<String, Object> param) throws UifException { private void setReplVOProperties(BomReplVO replVO, Map<String, Object> param) throws UifException {
HYPubBO hybo = new HYPubBO(); HYPubBO hybo = new HYPubBO();
@ -238,8 +235,8 @@ public class BomResource extends AbstractNCCRestResource {
// } // }
if (param.containsKey("creplmaterialvid")) { if (param.containsKey("creplmaterialvid")) {
String mrlCode= (String) param.get("creplmaterialvid"); String mrlCode = (String) param.get("creplmaterialvid");
String mrlid=(String) hybo.findColValue("bd_material","pk_material"," code = '" + mrlCode + "' "); String mrlid = (String) hybo.findColValue("bd_material", "pk_material", " code = '" + mrlCode + "' ");
replVO.setCreplmaterialvid(mrlid); replVO.setCreplmaterialvid(mrlid);
} }
@ -273,34 +270,6 @@ public class BomResource extends AbstractNCCRestResource {
} }
} }
} }
public AggBomVO[] updateBomWithParam(AggBomVO[] aggvos, boolean isFromBom, boolean isecn, boolean isCheckEcn,
boolean isOnApprove) throws BusinessException {
if (MMArrayUtil.isEmpty(aggvos)) {
return null;
}
try {
// 检查该BOM是否被删除因为如果BOM树状维护将BOM删除了不允许修改该条记录
Set<String> bomids = new HashSet<String>();
for (AggBomVO vo : aggvos) {
bomids.add(vo.getPrimaryKey());
}
Set<String> checkResult = BomPubBP.getBomID(bomids.toArray(new String[] {}));
if (checkResult != null && checkResult.size() < bomids.size()) {
nc.vo.pubapp.pattern.exception.ExceptionUtils.wrappBusinessException(MMBDLangConstBom0202.getBOM_DELETED());
}
// 加锁 + 检查ts
GCBillTransferTool<AggBomVO> transTool = new GCBillTransferTool<AggBomVO>(aggvos);
// 补全前台VO
AggBomVO[] fullBills = transTool.getClientFullInfoBill();
// 获得修改前vo
AggBomVO[] originBills = transTool.getOriginBills();
BomUpdateBP bp = new BomUpdateBP();
return bp.update(fullBills, originBills, isCheckEcn, isOnApprove, isFromBom, isecn);
} catch (Exception e) {
nc.vo.pubapp.pattern.exception.ExceptionUtils.marsh(e);
}
return null;
}
public String getModule() { public String getModule() {
return "mmbd"; return "mmbd";