package foundation.data.rule.exists; import java.util.List; import foundation.action.ActionContext; import foundation.action.ActionProvider; import foundation.dao.DataPackage; import foundation.dao.DataSource; import foundation.dao.PackageItem; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; public class ExistsValidator extends ActionProvider { @Override protected void publishMethod() { addMethod("checkExists"); } public void checkExists() throws Exception { DataPackage dataPackage = dataReader.getDataPackage(); boolean isCheck = dataReader.getBoolean("check_exists", true); String dataName = dataReader.getString("dataname"); boolean existsResult = false; if(!isCheck) { logger.info("dataName: {}, do not check this time", dataReader.getString("dataname")); return ; } if (dataPackage == null ) { logger.info("datapackage is null, cannot check exists; dataName: " + dataName); return ; } // 1.检查主表 DataObject dataObject = dataPackage.getMasterDataObject(); Entity masterEntity = dataPackage.getMasterEntity(); masterEntity = dataPackage.getMasterEntity(); existsResult = dataObject.existsValidate(masterEntity); // 2.检查明细 dataPackage.loadOneDataFromDB(); List slaveItems = dataPackage.getSlaveItems(); for (PackageItem item: slaveItems){ String itemName = item.getName(); dataObject = DataObject.getInstance(itemName); EntitySet detailEntitySet = dataPackage.getItemEntitySet(itemName, DataSource.DB); if(dataObject.existsValidate(detailEntitySet)) { existsResult = true; } } if(existsResult) { task.terminate(); } } public boolean checkExists(DataPackage dataPackage, ActionContext context) throws Exception { dataReader = context.getDataReader(); boolean isCheck = dataReader.getBoolean("check_exists", true); String dataName = dataReader.getString("dataname"); boolean existsResult = false; if(!isCheck) { logger.info("dataName: {}, do not check this time", dataReader.getString("dataname")); return false; } if (dataPackage == null ) { logger.info("datapackage is null, cannot check exists; dataName: " + dataName); return false; } // 1.检查主表 DataObject dataObject = dataPackage.getMasterDataObject(); Entity masterEntity = dataPackage.getMasterEntity(DataSource.Request); existsResult = dataObject.existsValidate(masterEntity); // 2.检查明细 dataPackage.loadOneDataFromDB(); List slaveItems = dataPackage.getSlaveItems(); for (PackageItem item: slaveItems){ String itemName = item.getName(); dataObject = DataObject.getInstance(itemName); EntitySet detailEntitySet = dataPackage.getItemEntitySet(itemName, DataSource.Request); if(dataObject.existsValidate(detailEntitySet)) { existsResult = true; } } return existsResult; } }