说明:对于一对多关联的两张表(a --> b 是1 --> n),根据b表的某个属性来确定a表的相关属性
示例:header --> details(1 --> n),根据detailsLineStatus来确定headerStatus
public void updateHeaderStatus(Header header) {
//查询明细
DetailsSearch search = new DetailsSearch();
search.setHeaderNo(header.getHeaderNo());
List<Details> list = detailsMapper.find(search);
//数量临时变量
int countMax = 0;//最大状态的单据行的个数
int countAll = list.size();//单据行数
String statusMax = Consts.ASN_STATUS_00;//初始化最大状态
//遍历所有明细
for (Details d : list) {
//统计状态个数
String detailsLineStatus = d.getDetailsLineStatus();
if (statusMax.compareTo(detailsLineStatus) == 0) {
countMax++;
}
if (statusMax.compareTo(detailsLineStatus) < 0) {
statusMax = detailsLineStatus;
countMax = 1;
}
}
//计算头状态
String headerStatus = null;
if (countAll == countMax) {//所有明细相同状态
headerStatus = statusMax;
} else {//明细状态各不相同
if (v1.equals(statusMax)) {//明细某一完全状态
asnStatus = 'v1降一级';//设置头部为某一非完全状态
} else {//其他状态
headerStatus = statusMax;
}
}
header.setHeaderStatus(headerStatus);
headerMapper.updateByPrimaryKeySelective(header);
}