package com.changhong.epc.bean.count.format; import com.changhong.epc.bean.count.format.CpnInfo.CpnMsgCode; import com.changhong.epc.bean.count.format.CpnInfo.CpnMsgInfo; import com.google.common.base.Objects; import com.iemsoft.framework.cloud.core.tools.ObjectUtil; import org.apache.commons.lang3.math.NumberUtils; import java.util.List; import java.util.Set; import java.util.TreeSet; public interface CpnInfoCommons { /** * 修改控件值(別名優先) * @param aliasOrMdCode * @param value * @return */ default boolean addCpnVal(String aliasOrMdCode, Object value, boolean replace){ CpnInfo cpnInfo = seacheCpnInfoByAlias(aliasOrMdCode); if(ObjectUtil.empty(cpnInfo)) cpnInfo = seacheCpnInfoByMdCode(aliasOrMdCode); if(ObjectUtil.empty(cpnInfo)){ return Boolean.FALSE; }else{ if(replace) { cpnInfo.setValue(value); }else{ if (empty(cpnInfo.getValue())){ cpnInfo.setValue(value); } } return Boolean.TRUE; } } default boolean empty(Object val){ if(val == null){ return true; } String strVal = val.toString(); if(NumberUtils.isNumber(strVal)){ return 0 == NumberUtils.createDouble(strVal); } return ObjectUtil.empty(strVal); } /** * 查询控件(主數據) * @param mdCode * @return */ default CpnInfo seacheCpnInfoByMdCode(String mdCode){ CpnInfo[] cpnInfo = cpnInfos().stream().filter(cpn->Objects.equal(cpn.getMdCode(), mdCode)) .toArray(CpnInfo[]::new); if(ObjectUtil.empty(cpnInfo)){ return null; }else{ return cpnInfo[0]; } } /** * 查询控件(別名) * @param mdCode * @return */ default CpnInfo seacheCpnInfoByAlias(String alias){ CpnInfo[] cpnInfo = cpnInfos().stream().filter(cpn->Objects.equal(cpn.getFieldKey(), alias)) .toArray(CpnInfo[]::new); if(ObjectUtil.empty(cpnInfo)){ return null; }else{ return cpnInfo[0]; } } /** * 添加控件消息信息 * @param mdCode * @param msgCode * @param msgInfo * @return */ default boolean addCpnMsg(String mdCode, CpnMsgCode msgCode, TreeSet msgInfo){ CpnInfo cpnInfo = seacheCpnInfoByAlias(mdCode); if(ObjectUtil.empty(cpnInfo)) cpnInfo = seacheCpnInfoByMdCode(mdCode); if(ObjectUtil.empty(cpnInfo)){ return Boolean.FALSE; }else{ Set cacheData = cpnInfo.getMsgInfo().get(msgCode); if(ObjectUtil.empty(cacheData)){ cpnInfo.getMsgInfo().put(msgCode, msgInfo); }else{ for(CpnMsgInfo msg : msgInfo){ if(cacheData.contains(msg)) cacheData.remove(msg); cacheData.add(msg); } } return Boolean.TRUE; } } /** * 获得控件信息list * @return */ List cpnInfos(); }