| | |
| | | * 假设这个是一个DAO,当然有业务逻辑这个也可以是一个service。当然如果不用存储这个对象没用。 |
| | | */ |
| | | private StructureService structureService; |
| | | private DictUtils dictUtils; |
| | | |
| | | /** |
| | | * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 |
| | | * |
| | | * @param structureService |
| | | */ |
| | | public StructureUploadListener(StructureService structureService,DictUtils dictUtils) { |
| | | public StructureUploadListener(StructureService structureService) { |
| | | this.structureService = structureService; |
| | | this.dictUtils = dictUtils; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public void invoke(StructureData data, AnalysisContext context) { |
| | | Map<String, String> dicbomtype = dictUtils.getDicKey("bom_type_db"); |
| | | if (StringUtils.isEmpty(data.getAlternativeNo())) { |
| | | data.setAlternativeNo("*"); |
| | | } |
| | | if (StringUtils.isEmpty(data.getChildPartNo()) || StringUtils.isEmpty(data.getChildVersion()) || StringUtils.isEmpty(data.getFatherPartNo()) || StringUtils.isEmpty(data.getFatherVersion())) { |
| | | throw new RuntimeException("缺少零件数据编号或者版本"); |
| | | } |
| | | if (StringUtils.isEmpty(data.getQpa())) { |
| | | throw new RuntimeException("缺少数量"); |
| | | } |
| | | if (StringUtils.isEmpty(data.getLineItemNo())) { |
| | | throw new RuntimeException("缺少行项号"); |
| | | } |
| | | if (StringUtils.isEmpty(data.getOperationName())) { |
| | | throw new RuntimeException("缺少工序"); |
| | | } |
| | | data.setStructureType(StringUtils.isEmpty(data.getStructureType()) ? "M" : dicbomtype.get(data.getStructureType())); |
| | | list.add(data); |
| | | // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM |
| | | if (list.size() >= BATCH_COUNT) { |