/**
* 创建线束实例,根据设计接线信息创建线束对象(屏蔽线以及信息补充需屏蔽汇总表和明细表):
* <ul>
* <li>汇总死接头:在转换时需要单独处理,根据接线关系可构造;</li>
* <li>汇总电连接器等端子:导通测试时可达的端子;</li>
* <li>多芯线处理:若存在有效多芯线家族则归入相应的家族中;</li>
* <li>芯线处理:保存到按芯数管理芯线列表中[同时保存芯线类型列表];</li>
* </ul>
* 备注:为便于后续PDF解析,将引出线类型的端子用线号替换,将负线板、接地等存于PIN中,解析后应恢复为PIN为空形式。
*
* @param rid
* 由“图号_版本”构成的唯一标识
* @param edition
* 工艺版次
* @param verInfo
* 保存校验信息
* @return 线束工艺模型实例
* @throws Exception
* 数据库及未异常
*/
public static Harness buildHarness(ParaVO para, List<VerifyVO> verInfo)
throws Exception {
log.debug("Building Harness model...");
// 01.读取设计的接线信息构造线束结构
IDAO4PO dao = DefaultDAOFactory.getDAO(WirePO.class);
List<SqlPara> params = new ArrayList<SqlPara>();
params.add(new SqlPara(WirePO.MODULE_ID_, SqlPara.TYPE_EQ, para
.getRid()));
Dataset dsWire = dao.getDatasetByParam(params);// 获得指定图号的设计接线数据
dsWire.moveFirst();
if (dsWire.isLast()) {// 数据集为空则抛异常
throw new Exception(MessageFormat.format(
JFigUtil.getUserConfig(ERROR_NO_WIRE), para.getRid()));
}
Harness harness = new Harness(para.getPartNo(), para.getVersion(),
para.getEdition());// 构造线束实例
// 02.构造线束结构:逐条进行处理,构建线束物理结构(逐步去除引出线、屏蔽线)
while (!dsWire.isLast()) {// 逐条获取信息,判断死接头所属端、屏蔽家族
Record rd = dsWire.getCurrent();
WireLink wireCore = new WireLink();// 构造芯线
ConvertUtil.record2Bean(wireCore, rd, true);// 从数据库记录中获得信息
// 特殊格式处理:端子不应为null[PIN可以为空],若conn为null可能填写在端接形式中
if (StringUtil.isValidString(wireCore.getFromComp())) {
if (!StringUtil.isValidString(wireCore.getFromConn())
&& !StringUtil.isValidString(wireCore.getFromPin())) {
wireCore.setFromConn(wireCore.getFromComp());
wireCore.setFromComp(null);
}// 端、PIN均为空,将端接形式改在PIN中
}
if (StringUtil.isValidString(wireCore.getToComp())) {// 端接形式有效
if (!StringUtil.isValidString(wireCore.getToConn())
&& !StringUtil.isValidString(wireCore.getToPin())) {
wireCore.setToConn(wireCore.getToComp());
wireCore.setToComp(null);
}// 端、PIN均为空,将端接形式改在PIN中
}
if (!StringUtil.isValidString(wireCore.getFromConn())
|| !StringUtil.isValidString(wireCore.getFromConn())) {
log.warn("The CONN is invalid:{}", wireCore.getId());
VerifyInfoUtil.addVerifyInfo(verInfo, VerifyInfoUtil.ERR_0003,
wireCore.getId(), wireCore.getNote());
}// 如果处理后仍存在端为null的情况,则告警
// 03.导线及端子处理:注册导线及连接器[单芯线注册]
HarnessUtil.registWireWithConn(harness, verInfo, wireCore,
wireCore.getFromConn(), wireCore.getFromPin(), true);
HarnessUtil.registWireWithConn(harness, verInfo, wireCore,
wireCore.getToConn(), wireCore.getToPin(), false);
// 04.添加导线类型属性:以导线牌号为主要依据[同时更新数据库中内容]
String partNo = wireCore.getPartNo();
WirePara wirePara = WireUtil.getPara(partNo);
if (wirePara == null) {
VerifyInfoUtil.addVerifyInfo(verInfo, VerifyInfoUtil.ERR_0001,
wireCore.getId(), MessageFormat.format(
ConnUtil.PANTER_CONN_PIN, partNo,
wireCore.getNote()));
}
// 05.多芯家族处理:注册家族并添加导线
HarnessUtil.regisFamily(harness, wireCore);
dsWire.moveNext();
}
// 10.处理明细表[统计线缆模型]
dao = DefaultDAOFactory.getDAO(MaterialPO.class);
Dataset dsMaterial = dao.getDatasetByParam(params);// 获得指定图号的设计接线数据
HarnessUtil.registMaterial(harness, dsMaterial);// 转换为工艺的单机配置
log.debug("Harness model rebuilded!");
return harness;
}
【 在 KEILLY 的大作中提到: 】
: 我倒是想知道你们怎么写代码……
: 我一般就写“///////////////”,写多了的话感觉就浪费脑细胞了
: 修改的地方就写修改日期;
: ...................
--
修改:anderwen FROM 223.72.42.33
FROM 223.72.42.33